zoukankan      html  css  js  c++  java
  • 主题:hibernate生成tree(基于注解方式)

    Java代码

    package yingjun.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 Tree {
    	private int id;
    	private String name;
    	private Tree parent;
    	private Set<Tree> children=new HashSet<Tree>();
    	@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;
    	}
    	@ManyToOne
    	@JoinColumn(name="parent_id")
    	public Tree getParent() {
    		return parent;
    	}
    	public void setParent(Tree parent) {
    		this.parent = parent;
    	}
    	
    	@OneToMany(mappedBy="parent",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    	public Set<Tree> getChildren() {
    		return children;
    	}
    	public void setChildren(Set<Tree> children) {
    		this.children = children;
    	}
    
    	
    }
    


    生成的建表语句:

     create table Tree (
            id integer not null auto_increment,
            name varchar(255),
            parent_id integer,
            primary key (id)
        )
    
        alter table Tree 
            add index FK27E7BE9FD80F87 (parent_id), 
            add constraint FK27E7BE9FD80F87 
            foreign key (parent_id) 
            references Tree (id)


    向树中插入数据

    @Test
    	public void TestSaveTree(){
    		
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Tree tree1=new Tree();
    		tree1.setName("图片");
    		
    		Tree tree2=new Tree();
    		tree2.setName("照片");
    		
    		Tree tree3=new Tree();
    		tree3.setName("海报");
    		
    		Tree tree4=new Tree();
    		tree4.setName("我的照片1");
    		
    		Tree tree5=new Tree();
    		tree5.setName("我的照片2");
    		
    		tree1.getChildren().add(tree2);
    		tree1.getChildren().add(tree3);
    		tree2.getChildren().add(tree4);
    		tree2.getChildren().add(tree5);
    		tree2.setParent(tree1);
    		tree3.setParent(tree1);
    		tree4.setParent(tree2);
    		tree5.setParent(tree2);	
    		
    		session.save(tree1);
    		session.getTransaction().commit();
    	}


    结果:


    从树中取入数据代码:

    @Test
    	public void TestLoadTree(){
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Tree t=(Tree)session.load(Tree.class, 1);
    		print(t);
    		session.getTransaction().commit();
    		
    		
    	}
    
    	private void print(Tree tree) {
    		System.out.println(tree.getName());
    		for(Tree child: tree.getChildren()){
    			print(child);
    		}


    取出结果:


    转载出处:

    http://www.iteye.com/topic/1129579

  • 相关阅读:
    正则表达式和re模块
    面向对象基础
    面向对象高级
    网络编程
    collectiontimeossysjson模块
    继承
    封装
    我在吃饭
    111
    关于羽毛球拍
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2980494.html
Copyright © 2011-2022 走看看