注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

清风幻影的博客

Where there is love, I will be there.

 
 
 

日志

 
 
关于我

同是天涯沦落人,相逢何必曾相识. 天生我材必有用,千金散尽还复来. 天若有情天亦老,人间正道是沧桑. 月影西斜人已去, 堤上梅花情依旧, 此情故已成追忆, 美人如玉夜留香

网易考拉推荐

hibernate生成tree  

2013-03-23 17:19:38|  分类: hiber_1 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://www.iteye.com/topic/1129579

  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. }  

 生成的建表语句:

Xml代码  收藏代码
  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)  

 向树中插入数据:

Java代码  收藏代码
  1. @Test  
  2.     public void TestSaveTree(){  
  3.           
  4.         Session session=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.     }  

 结果:

 

 从树中取入数据代码:

Java代码  收藏代码
  1. @Test  
  2.     public void TestLoadTree(){  
  3.         Session session=HibernateUtil.getSessionFactory().getCurrentSession();  
  4.         session.beginTransaction();  
  5.         Tree t=(Tree)session.load(Tree.class1);  
  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.         }  

 取出结果:



 

  评论这张
 
阅读(601)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018