java - 使用新主键克隆现有对象

标签 java hibernate

我有两个对象,如下

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 个重复的对象。

请您应该分离对象并保存它,否则请使用合并。

您可以在此处阅读有关合并的更多信息:

http://www.hibernate-training-guide.com/merge.html

关于java - 使用新主键克隆现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7468750/

相关文章:

java - 了解 Hibernate 部分刷新行为

java - hibernate 问题 : must appear in the GROUP BY clause or be used in an aggregate function

java - java套接字编程中如何在不使用IP地址的情况下获取MAC地址

java - [java]删除多余的空格

java - Spring 中 FilterType.ANNOTATION 的字符串模式

java - hibernate 代理问题

java - 反序列化 java.awt.Color -> java.io.InvalidClassException

java - MQTT 应用程序使用单个客户端应用程序/库与两个代理连接

java - Hibernate 生成计数(1)

java - Spring JPA @OneToMany 参数值[]与预期类型不匹配