示例: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 (?, ?, ?)
答案 0 :(得分:0)
检查Hibernate inverse
属性:
http://www.mkyong.com/hibernate/inverse-true-example-and-explanation/
什么是“反向”?
这是Hibernate中最令人困惑的关键字,至少我拿了很多 很长一段时间才能理解它。 “inverse”关键字始终是声明的 在一对多和多对多的关系中(多对一没有 反向关键字),它意味着哪一方负责照顾 关系。 “逆”,应该改为“关系所有者”?
在Hibernate中,只有“关系所有者”才能维护 关系,并创建“逆”关键字来定义哪个 方是维持关系的所有者。然而“逆” 关键字本身不够冗长,我建议改变 关键字“relationship_owner”。
简而言之,inverse =“true”表示这是关系所有者,而且 inverse =“false”(默认值)表示不是。
取决于"关系所有者" Hibernate决定天气是否更新。