Używam Spring Data REST z JPA. Mam jednostkę użytkownika, która ma wiele do jednego relacji z innym o nazwie AccountStatus modelowanym w oddzielnej tabeli RDBMS. Reprezentacja JSON wygląda następująco:Jak zaktualizować relację @ManyToOne z usługą Spring Data REST?
{
"id": "123"
"username": "user1",
"accountStatus": {
"id": "1",
"status": "Active"
}
}
Relacje w jednostce użytkownik to:
@ManyToOne(optional = false)
@JoinColumn(name = "account_state")
@Getter @Setter private AccountState accountState;
Teraz staram się zmienić stan konta za pomocą żądania plaster na/Użytkownicy/123 i ładowności:
{"accountState":{"id":0}}
ale pojawia się błąd:
"identifier of an instance of com.domain.account.AccountState was
altered from 1 to 0; nested exception is org.hibernate.HibernateException:
identifier of an instance of com.domain.account.AccountState was
altered from 1 to 0"
Próbowałem również użyć @ HandleBeforeSave/@ HandleBeforeLinkSave, aby pobrać nowe konto Account z repozytorium i zastąpić user.accountStatus bez powodzenia.
Co robię źle?
Możliwa duplikat [Hibernate: Jak naprawić "identyfikator instancji zmienionej z X na Y"?] (http://stackoverflow.com/questions/4179166/hibernate-how-to-fix-identifier-of-an-instance-altered-from-x-to- y) – Makoto
@Makoto, myślę, że inne pytanie dotyczy zmiany PK podmiotu będącego właścicielem, mój problem dotyczy zmiany relacji podrzędnej, w której nie zdefiniowano kaskadowania między użytkownikiem a stanem konta. – florind