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

  • 相关阅读:
    mybatis 从数据库查询的信息不完整解决办法
    Mybatis关联查询,查询出的记录数量与数据库直接查询不一致,如何解决?
    UltraEdit快捷键大全-UltraEdit常用快捷键大全
    使用UltraEdit 替换解决---文字中含有逗号的文件,如何把逗号自动转换成为:回车换行呢?
    在对文件进行随机读写,RandomAccessFile类,如何提高其效率
    雷军:曾经干掉山寨机,现在干掉山寨店(将性价比进行到底)
    tbox的项目:vm86(汇编语言虚拟机),tbox(类似dlib),gbox(c语言实现的多平台图形库)
    Delphi XE8 iOS与Android移动应用开发(APP开发)教程[完整中文版]
    人和动物的最大区别,在于能否控制自己
    CWnd和HWND的区别(hWnd只是CWnd对象的一个成员变量,代表与这个对象绑定的窗口)
  • 原文地址:https://www.cnblogs.com/flying607/p/3480236.html
Copyright © 2020-2023  润新知