Hibernate——在@OneToMany上级联
我和你之间有一种Hibernate——在@OneToMany上级联,hibernate,mapping,hibernate-onetomany,object-relational-model,Hibernate,Mapping,Hibernate Onetomany,Object Relational Model,我和你之间有一种@OneToMany关系 Table1和Table2在Hibernate中。 Table1是所有者,关系是单向的——我还没有映射 表2返回表1 因此,作为这项工作的一部分,我定义了表2的集合 此@OneToMany映射的实例。 我把所有的东西都串联起来 在这个“场景”中,我希望添加一个 Table2实例,例如Table2\u a、Table2\u b和Table2\u c 与Table1对象相关,比如说Table1 在保存owner类实例时,是否有方法执行此插入,table1,
@OneToMany
关系
Table1
和Table2
在Hibernate中。
Table1
是所有者,关系是单向的——我还没有映射
表2
返回表1
因此,作为这项工作的一部分,我定义了表2的集合
此@OneToMany
映射的实例。
我把所有的东西都串联起来
在这个“场景”中,我希望添加一个
Table2
实例,例如Table2\u a
、Table2\u b
和Table2\u c
与Table1
对象相关,比如说Table1
在保存owner类实例时,是否有方法执行此插入,table1
,
从而将依赖类实例table2_a
、table2_b
和table2_c
保存在级联上?
当我尝试这样做时,我得到一个错误
Duplicate entry '23' for key ...
Hibernate正在尝试保存所有table2\u a
、table2\u b
和table2\u c
在相同的Table2
上,为会话中相应的Table1
实例生成键值。
那么,我如何在这里使用@OneToMany
的“多”方面呢
有没有一种方法可以使用单向映射进行插入
按原样--在@ManyToOne
上,对于关系的另一端,不将表2
映射到表1
?
我想让桌子保持光亮
代码正在集合中插入一个Table2
实例,其他一切正常
//===========================
编辑:代码的相关部分:
表1
中定义的关系——实体类:
@OneToMany(cascade = CascadeType.ALL)
private Collection<Table2> table2Inst = new ArrayList<>();
// getter & setter
注意:我在entity类上定义了这一切。映射文件中没有任何内容。是否需要在一对多中添加mappedBy=“table1Id”
或其他内容?像这样
@OneToMany(cascade = CascadeType.ALL, mappedBy = "table1Id");//table1Id is foreign key of table1 in table2
private Collection<Table2> table2Inst = new ArrayList<>();
@OneToMany(cascade=CascadeType.ALL,mappedBy=“table1Id”)//table1Id是table2中table1的外键
私有集合table2Inst=newarraylist();
您是否确保联系人列表由所有新对象组成新表2()
?发布有关如何保存这些表的示例代码
@OneToMany(cascade = CascadeType.ALL, mappedBy = "table1Id");//table1Id is foreign key of table1 in table2
private Collection<Table2> table2Inst = new ArrayList<>();