15hibernate hibernate树状结构的设计(较重要)

@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比较好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值