#json #rest #spring-boot
#json #rest #spring-boot
Вопрос:
Я пытаюсь сохранить (ОПУБЛИКОВАТЬ) с помощью структуры json, и мне нужно использовать внешний ключ (idClient и idUser), но это приводит к описанной ошибке, я не знаю, правильно ли я отправляю ее, idClient создал ее вручную, а не сгенерировал автоматически.
И попытался решить это с помощью аннотаций, но не смог.
@JsonIgnore
@OneToMany(mappedBy = "idClient", cascade = { CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.REMOVE}, fetch = FetchType.LAZY, orphanRemoval = true)
private Collection<Pres> presCollection1;
@JsonIgnore
@OneToMany(mappedBy = "idUser", cascade = { CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.REMOVE}, fetch = FetchType.LAZY, orphanRemoval = true)
private Collection<Pres> presCollection2;
@ManyToOne
@JsonIgnoreProperties("id_client")
@JoinColumn(name = "id_client", referencedColumnName = "identi")
private Person idClient;
@ManyToOne
@JsonIgnoreProperties("id_user")
@JoinColumn(name = "id_user", referencedColumnName = "identi")
private Person idUser;
JSON TO SEND
{
"date": "2019-03-24T05:00:00.000Z",
"lastDate": "2019-09-24T05:00:00.000Z",
"idClient":{"idClient":11},
"idUser":{"idUser":12}
}
Мне нужно сохранить идентификаторы клиента и пользователя
Комментарии:
1. покажите полный стек, а также транзакционный метод, с помощью которого вы сохраняете
2. @PostMapping(использует = MediaType. APPLICATION_JSON_VALUE, выдает = MediaType. APPLICATION_JSON_VALUE) public ResponseEntity<Объект> регистратор (@Valid @RequestBody Предварительно предварительно){ Prest prest = service.save(prest); Расположение URI = ServletUriComponentsBuilder.fromCurrentRequest().path(«/{id}»).buildAndExpand(emp.getIdPrest()). toUri(); возвращает ResponseEntity.created((местоположение URI)). normalize()).build(); }
Ответ №1:
cascade = {CascadeType.MERGE,
CascadeType.REMOVE}
вы должны объединить эти значения, поэтому укажите только каскадный тип merge.