为什么在持久化与其他实体具有一对多关系的实体时会触发其他查询?

时间:2014-11-28 09:49:54

标签: hibernate one-to-many

示例:1个国家/地区包含关联状态列表(假设为2)。 当我持久化国家对象后,Hibernate会触发查询:

insert into MyCountry (name, id) values (?, ?)
insert into MyState (name, country_id, id) values (?, ?, ?)
insert into MyState (name, country_id, id) values (?, ?, ?)
update MyState set country_id=? where id=?
update MyState set country_id=? where id=?

为什么在可以添加country_id的地方触发了单独的更新查询:

insert into MyState (name, country_id, id) values (?, ?, ?)

1 个答案:

答案 0 :(得分:0)

检查Hibernate inverse属性:
http://www.mkyong.com/hibernate/inverse-true-example-and-explanation/

  

什么是“反向”?

     

这是Hibernate中最令人困惑的关键字,至少我拿了很多   很长一段时间才能理解它。 “inverse”关键字始终是声明的   在一对多和多对多的关系中(多对一没有   反向关键字),它意味着哪一方负责照顾   关系。 “逆”,应该改为“关系所有者”?

     

在Hibernate中,只有“关系所有者”才能维护   关系,并创建“逆”关键字来定义哪个   方是维持关系的所有者。然而“逆”   关键字本身不够冗长,我建议改变   关键字“relationship_owner”。

     

简而言之,inverse =“true”表示这是关系所有者,而且   inverse =“false”(默认值)表示不是。

取决于"关系所有者" Hibernate决定天气是否更新。