Hibernate树形结构的关联映射
2012-06-12 17:55 功夫猫 阅读(314) 评论(0) 收藏 举报一、帖子
具有相同属性的同一类事物,称之为树形结构。如何用hibernate给树形结构建表呢。
| id | 属性 | pid |
| 1 | - | 0 |
| 2 | - | 1 |
| 3 | - | 2 |
| 4 | - | 2 |
表格的id自动生成,pid为0的为主贴,pid为1的是id为1的跟帖。
给出代码:
Type.calss
1 @Entity 2 @Table(name="t_type") 3 public class Type { 4 private int id; 5 private String plot; 6 private Type parant; 7 private Set<Type> children = new HashSet<Type>(); 8 9 @Id 10 @GeneratedValue 11 public int getId() { 12 return id; 13 } 14 public void setId(int id) { 15 this.id = id; 16 } 17 public String getPlot() { 18 return plot; 19 } 20 public void setPlot(String plot) { 21 this.plot = plot; 22 } 23 @ManyToOne 24 @JoinColumn(name="pid") 25 public Type getParant() { 26 return parant; 27 } 28 public void setParant(Type parant) { 29 this.parant = parant; 30 } 31 @OneToMany(mappedBy="parant") 32 public Set<Type> getChildren() { 33 return children; 34 } 35 public void setChildren(Set<Type> children) { 36 this.children = children; 37 }
二、学生、课程、分数
1、学生与课程的关系是n:n
2、学生与分数的关系是1:n
3、课程与分数的关系是1:n
Student.class
1 package com.kebin.pojo; 2 3 import java.util.Set; 4 5 import javax.persistence.Entity; 6 import javax.persistence.GeneratedValue; 7 import javax.persistence.Id; 8 import javax.persistence.JoinColumn; 9 import javax.persistence.JoinTable; 10 import javax.persistence.ManyToMany; 11 import javax.persistence.Table; 12 13 @Entity 14 @Table(name="t_student") 15 public class Student { 16 private int id; 17 private String name; 18 private Set<Course> course; 19 20 21 @Id 22 @GeneratedValue 23 public int getId() { 24 return id; 25 } 26 public void setId(int id) { 27 this.id = id; 28 } 29 public String getName() { 30 return name; 31 } 32 public void setName(String name) { 33 this.name = name; 34 } 35 @ManyToMany 36 @JoinTable(name="t_score",joinColumns={@JoinColumn(name="sid")},inverseJoinColumns={@JoinColumn(name="cid")}) 37 public Set<Course> getCourse() { 38 return course; 39 } 40 public void setCourse(Set<Course> course) { 41 this.course = course; 42 } 43 44 }
Course.class
1 package com.kebin.pojo; 2 3 import java.util.Set; 4 5 import javax.persistence.Entity; 6 import javax.persistence.GeneratedValue; 7 import javax.persistence.Id; 8 import javax.persistence.JoinColumn; 9 import javax.persistence.JoinTable; 10 import javax.persistence.ManyToMany; 11 import javax.persistence.Table; 12 13 @Entity 14 @Table(name="t_course") 15 public class Course { 16 private int id; 17 private String name; 18 private Set<Student> students; 19 20 21 @Id 22 @GeneratedValue 23 public int getId() { 24 return id; 25 } 26 public void setId(int id) { 27 this.id = id; 28 } 29 public String getName() { 30 return name; 31 } 32 public void setName(String name) { 33 this.name = name; 34 } 35 @ManyToMany 36 @JoinTable(name="t_score",joinColumns={@JoinColumn(name="cid")},inverseJoinColumns={@JoinColumn(name="sid")}) 37 public Set<Student> getStudents() { 38 return students; 39 } 40 public void setStudents(Set<Student> students) { 41 this.students = students; 42 } 43 44 45 }
Score.class
package com.kebin.pojo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="t_score") public class Score { private int id; private int fenshu; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public int getFenshu() { return fenshu; } public void setFenshu(int fenshu) { this.fenshu = fenshu; } }

浙公网安备 33010602011771号