hibernate树
生活随笔
收集整理的這篇文章主要介紹了
hibernate树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 樹實現通過pid進行指向上一層來實現,實體類代碼如下
package com.test.model;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@GeneratedValuepublic 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="parent_Id")public Org getParent() {return parent;}public void setParent(Org parent) {this.parent = parent;} }2.測試類代碼如下,? ?查詢時可通過遞歸進行查詢
package com.test.test;import org.hibernate.classic.Session;import com.test.Util.HibernateUtil; import com.test.model.Org;public class StudentManager {public static void main(String[] args) {new StudentManager().testSave();}public void testSave() {Session session = HibernateUtil.getSessionFactory().getCurrentSession();session.beginTransaction();Org o = new Org();o.setName("總公司");Org o1 = new Org();o1.setName("分公司1");Org o2 = new Org();o2.setName("分公司2");Org o21 = new Org();o21.setName("分公司2_1");Org o22 = new Org();o22.setName("分公司2_2");o.getChildren().add(o1);o.getChildren().add(o2);o1.setParent(o);o2.setParent(o);o2.getChildren().add(o21);o2.getChildren().add(o22);o21.setParent(o2);o22.setParent(o2);session.save(o);testLoad();session.getTransaction().commit();}public void testLoad() {Session session = HibernateUtil.getSessionFactory().getCurrentSession();session.beginTransaction();Org org = (Org)session.load(Org.class, 1);print(org, 0);}private void print(Org org, int level) {String str = "----";for(int i=0; i<level; i++) {System.out.print(str);}System.out.println(org.getName());level++;for(Org o:org.getChildren()) {print(o, level);}} }?
轉載于:https://www.cnblogs.com/redhat0019/p/8480051.html
總結
以上是生活随笔為你收集整理的hibernate树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国产1.5K屏幕+骁龙888 4G 华为
- 下一篇: 余承东称华为把高端手机让给了苹果 202