zoukankan      html  css  js  c++  java
  • hibernate 树状映射

    package com.bjsxt.hibernate;

    import java.util.HashSet;
    import java.util.Set;

    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToMany;

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

     

     

    package com.bjsxt.hibernate;

    import java.util.Map;

    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 HibernateTreeTest {
        private static SessionFactory sessionFactory;
       
        @BeforeClass
        public static void beforeClass() {
            new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        }
        @AfterClass
        public static void afterClass() {
            sessionFactory.close();
        }
       
        @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 o = (Org)session.load(Org.class, 1);
            print(o, 0);
            session.getTransaction().commit();
            session.close();
           
        }
       
        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);
            }
        }
        @Test
        public void testSchemaExport() {
            new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
        }
       
       
        public static void main(String[] args) {
            beforeClass();
        }
    }

  • 相关阅读:
    数学趣题——汉诺塔
    数学趣题——选美比赛
    数学趣题——计算组合数
    (结构型模式)Proxy——代理模式
    SHELL脚本的基础知识2——使用结构化命令
    数学趣题——寻找假币
    Cocoa使用自定义对话框的方法
    回调函数
    ObjectiveC 内存管理(转)
    mac 密码输入框控制——只能输入数字和字母,禁止特殊字符的输入
  • 原文地址:https://www.cnblogs.com/flying607/p/3480236.html
Copyright © 2011-2022 走看看