我正在开始我的 Hibernate 冒险,所以请耐心等待:) 我想对两个表进行映射,例如A和B。A和B之间的关系是一对多。 我写了这个 hbm.xml 文件:
<hibernate-mapping package="something">
<class name="A" table="A">
<id name="id" type="int" column="ID">
<generator class="native" />
</id>
<set name="setInA" sort="natural" cascade="all" lazy="false">
<key column="ANOTHER_ID"/>
<one-to-many class="B" />
</set>
</class>
<class name="B" table="B">
<id name="anotherId" type="int" column="ANOTHER_ID">
<generator class="native" />
</id>
</class>
</hibernate-mapping>
当然我也制作了 POJO 类 A 和 B。
现在,当我尝试这样做时:
A a = new A();
Set<B> set = new TreeSet<B>();
set.add(new B());
a.setSetInA(set);
session.save(a);
Hibernate 向表 A 插入新行,但(最糟糕的)不是向 B 表插入新行,而是仅对 B 中不存在的行进行 SQL 更新。 谁能告诉我为什么会这样吗?我做错了什么?
最佳答案
您应该首先持久化 B 的对象,或者使用 Cascade
选项。
关于java - Hibernate 是更新而不是插入,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122849/