现在的位置: 首页 > 综合 > 正文

Hibernate中集合配置详解

2019年03月08日 ⁄ 综合 ⁄ 共 1619字 ⁄ 字号 评论关闭
List - 一对多关系维护:

一的一方xml配置文件:
<list name="stuffs"table="STUFF">
          <key>
              <columnname="DEPARTMENT_ID"/>
          </key>
          <list-indexcolumn="ORDER_INDEX"/>
          <one-to-many class="com.lovesmile.oa.entity.Stuff"/>
       </list> 
测试:
package com.lovesmile.oa.test;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

import com.lovesmile.oa.entity.Department;
import com.lovesmile.oa.entity.Stuff;

public class Test2 {

public static void main(String[] args) {
Session session = null;
Transaction tx = null;
try {
AnnotationConfiguration acfg = newAnnotationConfiguration()
.configure();
session =acfg.buildSessionFactory().openSession();
tx = session.beginTransaction();
Department dpt = (Department) session.get(Department.class,1);
Stuff s = new Stuff();
s.setName("上网");
s.setDepartment(dpt);

dpt.getStuffs().add(s);// 一的一方维护排序索引

session.save(s);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}

}
注解方式:一对多集合上get方法添加:
@OneToMany(cascade = CascadeType.ALL, fetch =FetchType.LAZY, mappedBy = "department")
@IndexColumn(name="ORDER_INDEX")
Map - 一对多关系维护:
集合配置如下:
<map name="stuffs"table="STUFF">
          <key>
              <columnname="DEPARTMENT_ID"/>
          </key>
          <map-key type="string"column="USERNAME"/>
          <one-to-many class="com.lovesmile.oa.entity.Stuff"/>
</map>
 Department dpt = (Department)session.get(Department.class, 1);
Stuff s = new Stuff();
s.setName("上网");
// 维护外键的关系
s.setDepartment(dpt);

dpt.getStuffs().put("a11", s);// 一的一方维护key值的关系

session.save(s);
注解方式:一对多集合上get方法添加:
@OneToMany(cascade = CascadeType.ALL, fetch =FetchType.LAZY, mappedBy = "department")
@MapKey(columns={@Column(name="USER_NAME")})

抱歉!评论已关闭.