我有两个对象,如下
class A{
Set<B> bs ;
}
class B{
A a;
}
现在,我想找到 id 为 1 的 A
并插入一条 id 为 2 的新记录,所有其他值都相同。另外,与 A
关联的 B
也应该新插入。
例如,如果初始 A
的 ID 为 1
,并且与 5 个 B
关联,那么在我的代码执行后,我想要 2 个 id=1 和 2 的 A
和 10 个 B
(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
我遇到异常
Found two representations of same collection B.
我认为这是因为 B
的感染者在插入时具有与 A
相同的旧 ID
注意:我使用的是 HBM 文件而不是 JPA。
最佳答案
这是正确的,因为在同一个 session 中不能有 2 个重复的对象。
请您应该分离对象并保存它,否则请使用合并。
您可以在此处阅读有关合并的更多信息:
关于java - 使用新主键克隆现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7468750/