【发布时间】:2014-04-09 00:12:59
【问题描述】:
我之间有@OneToMany 关系
Table1 和 Table2 在休眠中。
Table1 是所有者,关系是单向的——我没有映射
Table2 回Table1。
因此,作为其中的一部分,我定义了 Collection 的 Table2
此@OneToMany 映射的实例。
我正在级联。
在这个“场景”中,我希望添加一个集合
Table2 实例,例如 table2_a、table2_b 和 table2_c
与Table1 对象相关,例如table1。
有没有办法在保存所有者类实例时进行这种插入,table1,
从而将依赖类实例table2_a、table2_b 和table2_c 保存在级联上?
当我尝试这样做时,我收到一个错误,
Duplicate entry '23' for key ...
Hibernate 正在尝试保存所有 table2_a、table2_b 和 table2_c
在为会话中相应的Table1 实例生成的相同Table2 键值上。
那么,我如何在这里使用@OneToMany 的“许多”方面?
有没有办法通过单向映射来进行这种插入
照原样 - 没有映射也 Table2 到 Table1,在 @ManyToOne,关系的另一边?
我希望保持桌子轻便。
代码正在将单个Table2 实例插入集合中,其他一切都很好。
//============================
编辑:代码的相关部分:
Table1中定义的关系——实体类:
@OneToMany(cascade = CascadeType.ALL)
private Collection<Table2> table2Inst = new ArrayList<>();
// getter & setter
在 pojo 中进行保存的代码:
table1 = (Table1)session.get(Table1.class, theId);
if ( table1!=null ) {
table1.getTable2Inst().addAll(contactsList);
session.saveOrUpdate(table1);
}
注意:我是在实体类上定义的。映射文件中没有任何内容。
【问题讨论】:
-
发布您如何保存这些表格的示例代码
标签: hibernate mapping hibernate-onetomany object-relational-model