zoukankan      html  css  js  c++  java
  • Hibernate学习笔记_关系映射_树状结构练习

    1         树状结构的设计(至关重要)

    a) 在同—个类中使用One2Many和Many20ne

    @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(mappedBy="parent",cascade={CascadeType.ALL},fetch=FetchType.EAGER)
        public Set<Org> getChildren() {
            return children;
        }
        public void setChildren(Set<Org> children) {
            this.children = children;
        }
        @ManyToOne()
        @JoinColumn(name="parentID")
        public Org getParent() {
            return parent;
        }
        public void setParent(Org parent) {
            this.parent = parent;
        }
    }
    @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 org=(Org)session.load(Org.class, 1);
            
            print(org,0);
        
            session.getTransaction().commit();
            session.close();
        }
    
        private void print(Org org,int level) {
            String str="";
            for(int i=0;i<level;i++){
                str+="----";
            }
            System.out.println(str+org.getName());
            for (Org o:org.getChildren()){
                print(o,level+1);
            }
            
        }
  • 相关阅读:
    【Linux高频命令专题(19)】vi/vim
    【Linux高频命令专题(18)】tail
    【Linux常识篇(1)】所谓的正向代理与反向代理
    【nginx运维基础(2)】Nginx的配置文件说明及虚拟主机配置示例
    【nginx运维基础(1)】Nginx的编译安装与使用
    Linux之SAMBA共享服务
    【Linux高频命令专题(17)】head
    【mongoDB高级篇③】综合实战(1): 分析国家地震数据
    php post
    python简单的socket 服务器和客户端
  • 原文地址:https://www.cnblogs.com/enjoy-life-clh/p/4146484.html
Copyright © 2011-2022 走看看