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

来源:互联网 发布:小学教师网络研修日志 编辑:程序博客网 时间:2024/06/05 09:44

在处理数据库实体关系时,需要配置对应的实体类映射文件这里仅有一对多关系的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>

待续

0 0
原创粉丝点击