我在 Hibernate
之间有@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
的相同Table2
键值上。Table1
那么,我如何使用@OneToMany
这里的“许多”方面?
有没有办法按原样使用单向映射进行这种插入 - 没有映射Table2
到Table1
, on @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);
}
注意:我在实体类上定义它。映射文件中没有任何内容。