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

  • 相关阅读:
    鼠标拖拽窗口效果(不允许拖出屏幕的可视区域)
    react-context
    上下固定,中间自适应布局
    左右固定,中间自适应布局
    leetcode每日一题(2020-07-03):108. 将有序数组转换为二叉搜索树
    leetcode每日一题(2020-07-02):378. 有序矩阵中第K小的元素
    leetcode每日一题(2020-07-01):718. 最长重复子数组
    leetcode每日一题(2020-06-30):剑指 Offer 09. 用两个栈实现队列
    leetcode每日一题(2020-06-29):215. 数组中的第K个最大元素
    leetcode每日一题(2020-06-28):209. 长度最小的子数组
  • 原文地址:https://www.cnblogs.com/flying607/p/3480236.html
Copyright © 2011-2022 走看看