【发布时间】:2016-04-17 17:41:07
【问题描述】:
我将 Spring Data REST 与 JPA 一起使用。我有一个 User 实体,它与另一个名为 AccountStatus 的实体存在多对一关系,该实体在单独的 RDBMS 表中建模。 JSON 表示形式如下所示:
{
"id": "123"
"username": "user1",
"accountStatus": {
"id": "1",
"status": "Active"
}
}
User实体中的关系是:
@ManyToOne(optional = false)
@JoinColumn(name = "account_state")
@Getter @Setter private AccountState accountState;
现在我尝试使用 /users/123 上的 PATCH 请求和有效负载来更改帐户状态:
{"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 并替换 user.accountStatus,但没有成功。
我做错了什么?
【问题讨论】:
-
@Makoto,我认为另一个问题是关于更改拥有实体的 PK,我的问题是关于更改在 User 和 AccountState 之间没有定义级联的子关系。
标签: spring jpa spring-data spring-data-rest