0
点赞
收藏
分享

微信扫一扫

hibernate生成tree

思考的鸿毛 2023-05-10 阅读 75

1. package yingjun.model;  
2.   
3. import java.util.HashSet;  
4. import java.util.Set;  
5.   
6. import javax.persistence.CascadeType;  
7. import javax.persistence.Entity;  
8. import javax.persistence.FetchType;  
9. import javax.persistence.GeneratedValue;  
10. import javax.persistence.Id;  
11. import javax.persistence.JoinColumn;  
12. import javax.persistence.ManyToOne;  
13. import javax.persistence.OneToMany;  
14.   
15.   
16. @Entity  
17. public class Tree {  
18.     private int id;  
19.     private String name;  
20.     private Tree parent;  
21.     private Set<Tree> children=new HashSet<Tree>();  
22.     @Id  
23.     @GeneratedValue  
24.     public int getId() {  
25.         return id;  
26.     }  
27.     public void setId(int id) {  
28.         this.id = id;  
29.     }  
30.     public String getName() {  
31.         return name;  
32.     }  
33.     public void setName(String name) {  
34.         this.name = name;  
35.     }  
36.     @ManyToOne  
37.     @JoinColumn(name="parent_id")  
38.     public Tree getParent() {  
39.         return parent;  
40.     }  
41.     public void setParent(Tree parent) {  
42.         this.parent = parent;  
43.     }  
44.       
45.     @OneToMany(mappedBy="parent",cascade=CascadeType.ALL,fetch=FetchType.EAGER)  
46.     public Set<Tree> getChildren() {  
47.         return children;  
48.     }  
49.     public void setChildren(Set<Tree> children) {  
50.         this.children = children;  
51.     }  
52.   
53.       
54. }  
 生成的建表语句:
 
 
  
1. create table Tree (  
2.        id integer not null auto_increment,  
3.        name varchar(255),  
4.        parent_id integer,  
5.        primary key (id)  
6.    )  
7.   
8.    alter table Tree   
9.        add index FK27E7BE9FD80F87 (parent_id),   
10.        add constraint FK27E7BE9FD80F87   
11.        foreign key (parent_id)   
12.        references Tree (id)  
 
 
 向树中插入数据:
 
 
  
1. @Test  
2.     public void TestSaveTree(){  
3.           
4.         Session sessinotallow=HibernateUtil.getSessionFactory().getCurrentSession();  
5.         session.beginTransaction();  
6.         Tree tree1=new Tree();  
7.         tree1.setName("图片");  
8.           
9.         Tree tree2=new Tree();  
10.         tree2.setName("照片");  
11.           
12.         Tree tree3=new Tree();  
13.         tree3.setName("海报");  
14.           
15.         Tree tree4=new Tree();  
16.         tree4.setName("我的照片1");  
17.           
18.         Tree tree5=new Tree();  
19.         tree5.setName("我的照片2");  
20.           
21.         tree1.getChildren().add(tree2);  
22.         tree1.getChildren().add(tree3);  
23.         tree2.getChildren().add(tree4);  
24.         tree2.getChildren().add(tree5);  
25.         tree2.setParent(tree1);  
26.         tree3.setParent(tree1);  
27.         tree4.setParent(tree2);  
28.         tree5.setParent(tree2);   
29.           
30.         session.save(tree1);  
31.         session.getTransaction().commit();  
32.     }  
 
  结果:

 
 从树中取入数据代码:
  
  
1. @Test  
2.     public void TestLoadTree(){  
3.         Session sessinotallow=HibernateUtil.getSessionFactory().getCurrentSession();  
4.         session.beginTransaction();  
5.         Tree t=(Tree)session.load(Tree.class, 1);  
6.         print(t);  
7.         session.getTransaction().commit();  
8.           
9.           
10.     }  
11.   
12.     private void print(Tree tree) {  
13.         System.out.println(tree.getName());  
14.         for(Tree child: tree.getChildren()){  
15.             print(child);  
16.         }  
  
 取出结果:

举报

相关推荐

Hibernate 如何生成 JPA 的 Metamodel

0 条评论