Hibernate高级实体关联映射之多值的实体关联(一对多关联,使用list)

来源:互联网 发布:面板数据回归分析实例 编辑:程序博客网 时间:2024/04/29 02:49

pom.xml:

 

 

resources/hibernate.cfg.xml:

 

 

pojo/User.java:

 

 

pojo/User.hbm.xml:

 

 

pojo/Address.java:

 

 

pojo/Address.hbm.xml:

 

 

util/HibernateUtil.java:

 

 

util/Manager.java:

 

 

表结构:

 

 

输出sql:

 

 


 

 

 

注意:User.hbm.xml中<list>不可以用inverse="true",否则hibernate会忽略反向集合的状态。这一次,集合包含了正确地更新数据库所需的信息:它的元素的位置,因此不可用inverse="true",不然ADDRESS表中的索引列ADDRESS_INDEX就没有值了。

 

而在另一端,Address.hbm.xml中,<many-to-one>的多对一映射没有inverse="true"属性,那么就需要添加insert="false",

update="false"这两个属性来模拟inverse="true",缺一不可。

 

设置insert和update为false具有预期的效果。如前所述,这两个属性一起使用,实际上使属性变成了只读。关联的这一端因此被任何写操作忽略,如果从set或者bag转换到list(或者任何其他被索引的集合),这是个必要条件。

 

还要注意,User.hbm.xml中<list>元素中的<key>子元素,设置update="false",避免不必要的更新操作。

 

原创粉丝点击