List - 一对多关系维护:
一的一方xml配置文件:
<list name="stuffs"table="STUFF">
测试:
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">
</map>
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")})