Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
2015-10-27 14:34
627 查看
Set类型的使用:
<hibernate-mapping package="cn.model"> <class name="Department" table="DEPARTMENT"> <id name="id" column="ID"> <generator class="native"></generator> </id> <property name="name" column="NAME" type="java.lang.String" /> <set name="employees"> <key column="DEPT_ID" /> <one-to-many class="Employee"/> </set> </class> </hibernate-mapping>
Set是最常见的在Hibernate中对集合进行映射的类型,其配置也很简单;
List类型的使用:
<hibernate-mapping package="cn.model"> <class name="Department" table="DEPARTMENT"> <id name="id" column="ID"> <generator class="native"></generator> </id> <property name="name" column="NAME" type="java.lang.String" /> <list name="employees"> <key column="DEPT_ID" /> <list-index column="EMPLOYEE_INDEX" /> <one-to-many class="Employee"/> </list> </class> </hibernate-mapping>
使用List进行集合映射有一点特殊,List是按顺序进行存入所以Hibernate还需要在表中新增一个排序列来存入数据存入的顺序:
Hibernate: create table EMPLOYEE ( ID integer not null auto_increment, NAME varchar(255), DEPT_ID integer, EMPLOYEE_INDEX integer, primary key (ID) )
Bag类型的使用:
如果想使用List,但又不想在表中产生排序列,那可以使用Bag ;在实体中还是使用List,但在Hbm.xml映射文件中将list改为bag即可:
public class Department { private Integer id; private String name; private List<Employee> employees; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Employee> getEmployees() { return employees; } public void setEmployees(List<Employee> employees) { this.employees = employees; } }
<hibernate-mapping package="cn.model"> <class name="Department" table="DEPARTMENT"> <id name="id" column="ID"> <generator class="native"></generator> </id> <property name="name" column="NAME" type="java.lang.String" /> <bag name="employees"> <key column="DEPT_ID" /> <one-to-many class="Employee"/> </bag> </class> </hibernate-mapping>
Map类型的使用:
使用Map类型对集合进行映射,程序中用的不多,但是也有存在,配置相比Set和Bag较麻烦一点:
<hibernate-mapping package="cn.model"> <class name="Department" table="DEPARTMENT"> <id name="id" column="ID"> <generator class="native"></generator> </id> <property name="name" column="NAME" type="java.lang.String" /> <map name="employees"> <key column="DEPT_ID" /> <map-key type="string" column="name" /> <one-to-many class="Employee"/> </map> </class> </hibernate-mapping>
数组Object[]类型的使用:
数组类型映射和List有点类似,都是需要一个排序的列:
public class Department {
private Integer id;
private String name;
private Employee[] employees;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Employee[] getEmployees() {
return employees;
}
public void setEmployees(Employee[] employees) {
this.employees = employees;
}
}
<hibernate-mapping package="cn.model"> <class name="Department" table="DEPARTMENT"> <id name="id" column="ID"> <generator class="native"></generator> </id> <property name="name" column="NAME" type="java.lang.String" /> <array name="employees"> <key column="DEPT_ID" /> <list-index column="EMPLOYEE_INDEX" /> <one-to-many class="Employee"/> </array> </class> </hibernate-mapping>
总结:
相关文章推荐
- Oracle归档日志写满(ora-00257)了怎么办
- zynq移植RT2870调试记录
- Oracle 11g RAC更改归档到ASM
- ActionBarSherlock使用教程(转)
- [Linux] Sed命令笔记
- javascript 学习总结(三)Boolean对象
- ”易修车“项目的微信支付问题
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- 自定义标签&&JSTL标签库详解
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- hbase优点与数据检索流程
- 使用 Cocoaspod 的pod install碰到的问题
- 自学Unity之做一个MOBA游戏1——Terrain(地形)
- hdu 2007 平方和与立方和
- AngularJS最常用的八种功能
- iOS UITableView的下拉刷新
- SAP升级项目终于立项了,如何着手准备?
- Android线程消息通信
- redis配置文件详解(转)
- 浏览器端简易加密