Как обновить отношения @ManyToOne с Spring Data REST?
Я использую Spring Data REST с JPA. У меня есть пользовательская сущность, которая имеет отношение "много к одному" с другим, называемым AccountStatus, смоделированным в отдельной таблице СУБД. Представление JSON выглядит следующим образом:
{
"id": "123"
"username": "user1",
"accountStatus": {
"id": "1",
"status": "Active"
}
}
отношение в сущности пользователя:
@ManyToOne(optional = false)
@JoinColumn(name = "account_state")
@Getter @Setter private AccountState accountState;
теперь я пытаюсь изменить статус учетной записи, используя запрос исправления на /users / 123 и полезную нагрузку:
{"accountState":{"id":0}}
но я получаю сообщение об ошибке:
"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"
Я также пытался использовать @HandleBeforeSave / @HandleBeforeLinkSave для извлечения нового AccountState из репозитория и замены пользователя.accountStatus без успеха.
что я делаю не так?
1 ответов
это действительно зависит от того, есть ли у вас экспортированный репозиторий для AccountState
. Если вы это сделаете, вы можете обновить состояние своей учетной записи с помощью PATCH
против /users/{id}
:
{
"accountState": "http://localhost:8080/accountStates/2"
}
таким образом, вы используете URI своего состояния учетной записи для ссылки на ресурс для назначения