我有2个对象如下
class A{
Set<B> bs ;
}
class B{
A a;
}
现在,我想找到id为1的A
并插入id为2的新记录,其他所有值都相同。还应该重新插入与B
相关联的A
。
例如,如果初始A
标识为1
,并且与B
s关联,那么在我的代码执行后,我想要2 A
个id = 1和2和10 B
s(A1为5,A2为5)。
我试过以下:
stat tx
A a= Find A with id a
make a transient
a.setId(null) ; As id is auto incremnt
persist A
commit tx
我的异常是
找到两个相同集合B的表示。
我认为这是因为B
在插入
注意:我使用的是HBM文件,而不是JPA。
答案 0 :(得分:1)
假设B
s'属性都不需要任何唯一性,你应该分离所有B
个对象(当你分离A
时,也可能会分离这些对象)并更改每个A
对象下的B
值 - 指定分离的A
。
答案 1 :(得分:1)
这是正确的,因为你不能在同一个会话中有2个重复的对象。
请你分离对象并保存,另外请使用merge。
你可以在这里阅读更多abot merge:
答案 2 :(得分:0)
我会使用BeanUtils.copyProperties(..)
复制实体。然后将ID设置为null。
答案 3 :(得分:0)
以下是我对此的看法。
另请查看transitive persistence的此链接。这可能会帮助你。