首先我们以一个例子来说明:
ITEM 与IMAGE(假设有多个字段比如name path size,item_id 等)
显然它们是一对多的关系,要实现它们的关联
则需在ITEM中需要加入一个集合类映射
这里牵涉到两种办法来解决这个问题,hibernate中有两种类型,实体和值类型。所以
第一:当用实体类型时其实就是用<one- to -many>即:item映射文件中加入:
<set name="image" table="image">
<key column="item_id"></key>
<one-to-many class="Image">
</set>
第二:当使用值类型时,则需要使用到组件的结合
即:item映射文件中加入:
<set name="image" table="image">
<key column="item_id"/>
<composite-element class="Image">
<property name="name" column=""/>
...
</composite-element >
</set>
这两者都可以实现ITEM和IMAGE的关联,但是区别就在第2中的IMAGE不是一个实体类(持久化类),没有标识符。使用所有字段作为联合主键。
显然在实际中第一种应该会用到多些,我想不通“值类型的集合映射”在哪里有应用场景?