hibernate树结构表的处理

来源:互联网 发布:双十一对淘宝的意义 编辑:程序博客网 时间:2024/05/16 19:03

1.建立类Org

package com.dada.hibernate;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.OneToMany;@Entitypublic class Org {private int id;private String name;private Set<Org> children = new HashSet<Org>();private Org parent;@Id@GeneratedValuepublic 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(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;}}


2.建立测试类Itest

package com.dada.hibernate;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.tool.hbm2ddl.SchemaExport;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;public class Itest {private static SessionFactory sf;@BeforeClasspublic static void beforeClass() {//new SchemaExport(new AnnotationConfiguration().configure()).create(true, true);sf = new AnnotationConfiguration().configure().buildSessionFactory();}@AfterClasspublic static void afterClass() {sf.close();}@Testpublic void testSave() {Org g = new Org();g.setName("总公司");Org g1 = new Org();g1.setName("分公司1");Org g2 = new Org();g2.setName("分公司2");Org g11 = new Org();g11.setName("分公司1-部门1");Org g12 = new Org();g12.setName("分公司1-部门2");//设置这层关系是为了在进行保存的时候//只需要保存最上层的那个对象其他下面//的对象都可以被关联的保存起来g.getChildren().add(g1);g.getChildren().add(g2);g1.getChildren().add(g11);g1.getChildren().add(g12);//设置这层关系是为了设置它们在数据库中的parent_id而用的g11.setParent(g1);g12.setParent(g1);g1.setParent(g);g2.setParent(g);//Session ss = sf.getCurrentSession();ss.beginTransaction();ss.save(g);ss.getTransaction().commit();}@Testpublic void testLoad() {Session session = sf.getCurrentSession();session.beginTransaction();Org o = (Org) session.load(Org.class, 1);print(o,0);session.getTransaction().commit();}private void print(Org o,int level) {String preStr="";for(int i=0;i<level;i++) {preStr="----";}System.out.println(preStr+o.getName());for(Org child:o.getChildren()) {print(child,level+1);}}public static void main(String[] args) {for(int i=0;i<0;i++) {System.out.println("haha");}}}


 

原创粉丝点击