Есть JSON который отправляю POST запросом:
[
{
"name": "Accept-Language",
"headerValuesEntityList": [
{
"value": "de"
},
{
"value": "de-CH"
},
{
"value": "en-US"
}
]
},
{
"name": "Cookie",
"headerValuesEntityList": []
},
{
"name": "Trailer",
"headerValuesEntityList": [
{
"value": "Expires"
}
]
}
]
Controller@PostMapping("/header/new")
public boolean save(@RequestBody HeaderEntity headerEntity) {
headerService.save(headerEntity);
return true;
}
Entity:Header@Entity
@Table(name = "header")
public class Header {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 128, nullable = false, unique = true)
private String name;
@Column(length = 512)
private String description;
@OneToMany(cascade = CascadeType.ALL)
private List headerValuesList;
HeaderValues@Entity
@Table(name = "header_value")
public class HeaderValuesEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 512)
private String value;
@Column(length = 512)
private String description;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "header_id")
private Header header;
public HeaderValues(){
}
Service:HeaderServicepublic interface HeaderService {
List<HeaderEntity> findAll();
List<HeaderEntity> findByNameContaining(String name);
boolean save(HeaderEntity headerEntity);
}
HeaderServiceImpl@Service
public class HeaderServiceImpl implements HeaderService {
private HeaderRepository headerRepository;
@Autowired
public HeaderServiceImpl(HeaderRepository headerRepository){
this.headerRepository = headerRepository;
}
public List<HeaderEntity> findAll() {
return headerRepository.findAll(); // todo добавить сортировку или возможность сортировки
}
@Override
public List<HeaderEntity> findByNameContaining(String name){
return headerRepository.findByNameContaining(name);
}
public boolean save(Header header) {
if (headerEntity == null) return false;
headerRepository.save(header);
return true;
}
}
При отправке Json-а что выше получаю такую ошибку:
JSON parse error: Cannot deserialize instance of `xxx.model.autocomplete.Header` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `xxx.model.autocomplete.Header` out of START_ARRAY token\n at [Source: (PushbackInputStream); line: 1, column: 1]
Если только каскадные данные - тогда работает
Если отправлять вот такой json
{
"name": "Accept-Language",
"headerValuesEntityList": [
{
"value": "de"
},
{
"value": "de-CH"
},
{
"value": "en-US"
}
]
}
тогда все работает
как отправлять пачку значений, а не по одному кормить ?