java - Hibernate 是更新而不是插入,为什么?

标签 java sql hibernate

我正在开始我的 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/

相关文章:

java - 在 AWS Credentials Provider 中使用标准配置文件名称?

mysql - 为什么 InnoDB 不支持全文搜索索引,而 MyISAM 支持全文搜索索引?

mysql - 插入或更新(无键)

java - Hibernate Search 空间构面查询首先运行 5 次,然后仅返回第 5 个结果

Java servlet 不写入响应字节

java - 将 jsp 表导出到 excel、word、pdf

java - 读取字符串作为对变量的引用

mysql - 低 mysql 索引基数但数据多样

java - 如何将 hibernate 搜索索引文件保存到项目 WEB-INF 文件夹中?

mysql - 更新 MySQL 表中的排名