Hibernate树形结构的关联映射

一、帖子

  具有相同属性的同一类事物,称之为树形结构。如何用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;

    }

    

}

 

 

你可能感兴趣的:(Hibernate)