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); }
取出结果:
相关推荐
教你如何用Hibernate生成映射文件和实体类,简单方便。
此文本是简洁明了介绍怎么使用hibernate生成实体类的,这是本人的小小的经验
hibernate自动生成entity,映射文件,dao.等
根据hibernate映射文件生成表 Configuration cfg = ( new Configuration()).configure(new File("src/hibernate.cfg.xml"));
hibernate dao 生成工具
常用Hibernate主键生成策略 常用Hibernate主键生成策略 常用Hibernate主键生成策略 常用Hibernate主键生成策略
用hibernate形式的uuid的生成类
hibernate代码自动生成
使用hibernate中的相关配置和方法自动生成数据表和表之间的关系
hibernate生成pojo
hibernate自动生成数据库文件.rar hibernate自动生成数据库文件.rar hibernate自动生成数据库文件.rar 不建议下载 某同学自己录的视屏
struts2+spring+hibernate+生成excel报表
六步骤轻松完成Hibernate中生成VO.xml(doc)
hibernate逆向生成小问题,主要是由数据库反向自成domain.
使用Hibernate工具生成实体类..........
可以根据数据库中的表生成hibernate实体类,需要自己修改jdbc.properties配置文件。
根据hibernate配置文件生成数据库.zip
Hibernate运用Annotation由实体类自动在数据库中生成对应的表
利用hibernate的逆向工程生成数据库表
Hibernate主键生成策略.doc ··········