首页 > 代码库 > Hibernate学习笔记_关系映射_树状结构练习

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

1         树状结构的设计(至关重要)

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

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

 

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