您的位置:首页 > 其它

Hibernate学习笔记_关系映射_树状结构练习

2014-12-05 13:35 555 查看
1 树状结构的设计(至关重要)

a) 在同—个类中使用One2Many和Many20ne

@Entity
public class Org {
private int id;
private String name;
private Set<Org> children=new HashSet<Org>();
private Org parent;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany(mappedBy="parent",cascade={CascadeType.ALL},fetch=FetchType.EAGER)
public Set<Org> getChildren() {
return children;
}
public void setChildren(Set<Org> children) {
this.children = children;
}
@ManyToOne()
@JoinColumn(name="parentID")
public Org getParent() {
return parent;
}
public void setParent(Org parent) {
this.parent = parent;
}
}


@Test
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();
}

@Test
public void testLoad() {
testSave();

Session session = sessionFactory.openSession();
session.beginTransaction();
Org org=(Org)session.load(Org.class, 1);

print(org,0);

session.getTransaction().commit();
session.close();
}

private void print(Org org,int level) {
String str="";
for(int i=0;i<level;i++){
str+="----";
}
System.out.println(str+org.getName());
for (Org o:org.getChildren()){
print(o,level+1);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐