Java Spring Data JPA-OneToMany儿童应被视为单一资源
使用Spring数据JPA1.11.6.RELEASE,我遇到以下问题 通过它们之间简单的1对n关系,我得到了Java Spring Data JPA-OneToMany儿童应被视为单一资源,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,使用Spring数据JPA1.11.6.RELEASE,我遇到以下问题 通过它们之间简单的1对n关系,我得到了TableA,和TableB,其中a包含多个B。我有RepoA,它不仅修改了TableA,而且还修改了TableB,作为一个受抚养的孩子 从这个意义上讲,当我在DB中有以下内容时(用JSON编写实体) 我想通过RepoA,更新TableA,从而更新TableB { "uuid": "f10cdd75-ffbe-49e6-b7a5-ad6f8e15b2b5", "name"
TableA
,和TableB
,其中a
包含多个B
。我有RepoA
,它不仅修改了TableA
,而且还修改了TableB
,作为一个受抚养的孩子
从这个意义上讲,当我在DB中有以下内容时(用JSON编写实体)
我想通过RepoA
,更新TableA
,从而更新TableB
{
"uuid": "f10cdd75-ffbe-49e6-b7a5-ad6f8e15b2b5",
"name": "title",
"listOfB": [{
"pk": 2
}, {
"pk": 3
}]
}
但是由于Hibernate遵循其著名的操作顺序,我得到了约束冲突,它尝试插入所有相关的TableB
值,而不删除原始值
是否无法以任何方式覆盖表B
实体?我能够找到这个解决方案
select `TableA` with `TableB` values
clear `"listOfB"`
save & flush `TableA` // deletes all current `TableB`
add new `B`'s to `"listOfB"`
save again
但是它非常费劲,而且丑陋,加上我有越多这样的表,我必须编写更多这样的代码。我不能在
JPA
中有一些定义来自动允许这种行为吗?不要将此表视为适当的表,而仅将其视为基本资源,在所有更新请求中都应覆盖此表?发布这些实体。@ChackoMathew正如我在问题中所说,我已经用JSON发布了这些实体,请在评论之前阅读……对不起,我不清楚。我要求为表提供java实体类。这个或这个应该会有帮助
select `TableA` with `TableB` values
clear `"listOfB"`
save & flush `TableA` // deletes all current `TableB`
add new `B`'s to `"listOfB"`
save again