pom.xml:
resources/hibernate.cfg.xml:
pojo/Item.java:
pojo/Item.hbm.xml:
根据测试,list中有null值时,null值是插不进集合表中的,但也不会报错。
util/HibernateUtil.java:
util/Manager.java:
表结构:
输出sql:
上例中,<list>映射需要把一个索引列新增到集合表。索引列定义元素在集合中的位置。因而,hibernate能够保存集合元素的顺序。映射集合为<list>。
集合表的主键是ITEM_ID和POSITION的复合。注意,现在允许重复元素了,这与列表的语义一致。
持久化列表的索引从0开始,可以改变它,例如在映射中使用<list-index base="1".../>。注意,如果数据库中的索引数字不连续,hibernate就会把空元素添加到java列表中。
另一种方法,可以映射一个java数组而不是列表。hibernate支持这个。数组映射事实上与前一个例子是等同的,除了使用不同的元素和属性之外(<array>和<array-index>)。然而,基于前面阐述过的原因,hibernate应用程序很少使用数组。