Hibernate 映射关系 一对多 单向映射文件配置

    xiaoxiao2021-03-25  76

    在处理数据库实体关系时,需要配置对应的实体类映射文件这里仅有一对多关系的set、list、map; 有一个对象代码如下

    public class User { private Integer id; private String name; private Set<String> addressSet=new HashSet<String>(); private List<String> addressList=new ArrayList<String>(); private String[] addressArray; private Map<String,String> addressMap=new HashMap<String, String>(); private List<String> addressBag=new ArrayList<String>(); //省略setters和getters方法 }

    对应User.hbm.xml文件配置如下(一个User对应多个地址address) set

    <class name="User" table="t_user" > ........ <!-- name对应的用户的属性名 table为创建表--> <set name="addressSet" table="user_addressSet"> <!--不需要指定实体类主键,系统默认对应实体类主键id--> <key cloumn="userId"></key> <!--对应要创建的表中的元素名称和类型--> <element type="string" column="address"></element> </set> </class>

    这种情况的set为无序不重复存储,当然也可以修改变为可以排序的set。

    list

    <class name="User" table="t_user" > ........ <list name="addressList" table="user_addressList"> <key cloumn="userId"></key> <!-- 这是与Set的区别 因为list是有序的 所以必须有索引--> <list-index column="idx"></list-index> <element type="string" column="address"></element> </list> </class>

    map

    <class name="User" table="t_user" > ........ <map name="addressList" table="user_addressLmap"> <key cloumn="userId"></key> <!-- 这是与list的区别 因为map是有键值对无序 所以把list中索引替换为键值 索引为数值 而键值不一定所以要指定类型 所以必须有索引--> <map-key type="string" column="key_"></map-key> <element type="string" column="address"></element> </map> </class>

    待续

    转载请注明原文地址: https://ju.6miu.com/read-17439.html

    最新回复(0)