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

  • 相关阅读:
    Linux设置复制粘帖的快捷方式
    UC伯克利发布一个低成本家居机器人,会叠衣服、会泡咖啡
    称职QA经理必备的13项技能
    李开复:AI正在从黑科技变成主流,传统公司都需要“CAIO”
    为什么纸牌游戏Hanabi是人工智能的下一个挑战
    专家质疑亚马逊面部识别技术:机器眼里女士皮肤黑就等于是男人
    日媒联手高科技公司利用人工智能预测新闻对企业的影响
    Python 封王,Java和C宣布永久退出竞争舞台
    李开复:AI进入商用时代 偏重科研的“黑科技”非创业主旋律
    AI医疗与人类疾病的竞跑:5G落地,就像“三甲”到家
  • 原文地址:https://www.cnblogs.com/flying607/p/3480236.html
Copyright © 2011-2022 走看看