Как исправить ошибку «TransientPropertyValueException» при загрузке Spring

#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.