@Entity
public class Org
{
private int id;
private String name;
@OneToMany(cascade=CascadeType.All,mappedBy="parent")
private Set<Org> children = new HashSet<Org>();
@ManyToOne
@JoinColumn(name="parent_id")
private Org parent;
}
public void testSave(){
Org o = new Org();
o.setName("总公司");
Org o1 = new Org();
o1.setName("分公司1");
Org o2 = new Org();
o2.setName("分公司2");
Org o11 = new Org();
o11.setName("分公司1下部门1");
Org o12 = new Org();
o12.setName("分公司1下部门2");
o.getChildren().add(o1);
o.getChildren().add(o2);
o1.getChildren().add(o11);
o1.getChildren().add(o12);
o11.setParent(o1);
o12.setParent(o1);
o1.setParent(o);
o2.setParent(o);
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(o);
session.getTransaction().commit();
session.close();
}
public void testLoad(){
testSave();
Session session = sessionFactory.openSession();
session.beginTransaction();
Org o = (Org)session.load(Org.class,1);
print(o,0);
session.getTransaction().commit();
session.close();
}
public void print(Org o,int level){//树状结构的递归
String preStr = "";
for(int i=0;i<level;i++){
preStr += "----";
}
System.out.println(o.getName());
for(Org child : o.getChildren()){
print(child,level);//level展现树状结构,缩进
}
}//如果树很大,就不要用eager,这时采用ajax比较好
15hibernate hibernate树状结构的设计(较重要)
最新推荐文章于 2018-12-13 12:21:03 发布