总公司下有多个分公司,一个分公司上只有一个管理自己自己的总公司(除了总公司)。
即构成树形结构,可以将其存进数据库中,只构建一张表。
Org.java
@Entity
public class Org
{
private Org parent;
private String name;
private Set<Org>children=new HashSet<Org>();
private int id;
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
public Set<Org> getChildren() {
return children;
}
public void setChildren(Set<Org> children) {
this.children = children;
}
@ManyToOne
@JoinColumn(name="parent_id")
public Org getParent() {
return parent;
}
public void setParent(Org parent) {
this.parent = parent;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
测试代码:
Session sess=sf.getCurrentSession();
sess.beginTransaction();
Org o=new Org();
o.setName("zgs");
Org o1=new Org();
o1.setName("fgs1");
Org o2=new Org();
o2.setName("fgs2");
Org o11=new Org();
o11.setName("fgs11");
o11.setParent(o1);
o1.setParent(o);
o2.setParent(o);
o.getChildren().add(o1);
o.getChildren().add(o2);
o1.getChildren().add(o11);
sess.save(o);
sess.getTransaction().commit();