比如有两个pojo
Teacher.java -- 字段id、name、students;
Student.java -- 字段id、name、teachers;三张表
Teacher -- 列id、name;
Student -- 列id、name;
Teacher_Student 列 teacharId、studentId;以上描述了一个简单的多对多关系:
每个学生有多个教他的老师、每个老师有所教的多个学生;
这种关系在hibernate映射起来没问题;但是现在多了一个需求:
每个老师对其所教的学生,有一个优劣排序。(或每个学生对所教他的老师有一个优劣排序)
这样一来,针对于排序需求实质上是建立在关系表上的,每个学生被多个老师关联,每个老师对多个学生都有一套不同的排序方案。我的初步想法是在关系表上建立两个新的列,用来标明独立的排序方案:Teacher表: Student表:
id name id name
1 张三 1 王五
2 李四 2 赵六Teachar_Student关系表:
tid sid t_s_lvl s_t_lvl
1 1 2 2 -- 在张三眼里,王五是第二好的学生;在王五眼里,张三是第二好的老师;
2 1 2 1 -- 在李四眼里,王五是第二好的学生;在王五眼里,李四是最好的老师;
2 2 1 2 -- 在李四眼里,赵六是最好的学生;在赵六眼里,李四是第二好的老师;
1 2 1 1 -- 在张三眼里,赵六是最好的学生;在赵六眼里,张三是最好的老师;Teacher对象zhangsan,有一个set集合students,排序按照t_s_lvl asc,其他的以此类推;
<set name="students" table="Teacher_Student" sort="???" order-by="???">
<key>
<column name="teacherId" not-null="true" />
</key>
<many-to-many class="Student" column="studentId" />
</set>请问各位大侠,在sort或order-by里写什么、怎么写?能这样实现吗?
Teacher.java -- 字段id、name、students;
Student.java -- 字段id、name、teachers;三张表
Teacher -- 列id、name;
Student -- 列id、name;
Teacher_Student 列 teacharId、studentId;以上描述了一个简单的多对多关系:
每个学生有多个教他的老师、每个老师有所教的多个学生;
这种关系在hibernate映射起来没问题;但是现在多了一个需求:
每个老师对其所教的学生,有一个优劣排序。(或每个学生对所教他的老师有一个优劣排序)
这样一来,针对于排序需求实质上是建立在关系表上的,每个学生被多个老师关联,每个老师对多个学生都有一套不同的排序方案。我的初步想法是在关系表上建立两个新的列,用来标明独立的排序方案:Teacher表: Student表:
id name id name
1 张三 1 王五
2 李四 2 赵六Teachar_Student关系表:
tid sid t_s_lvl s_t_lvl
1 1 2 2 -- 在张三眼里,王五是第二好的学生;在王五眼里,张三是第二好的老师;
2 1 2 1 -- 在李四眼里,王五是第二好的学生;在王五眼里,李四是最好的老师;
2 2 1 2 -- 在李四眼里,赵六是最好的学生;在赵六眼里,李四是第二好的老师;
1 2 1 1 -- 在张三眼里,赵六是最好的学生;在赵六眼里,张三是最好的老师;Teacher对象zhangsan,有一个set集合students,排序按照t_s_lvl asc,其他的以此类推;
<set name="students" table="Teacher_Student" sort="???" order-by="???">
<key>
<column name="teacherId" not-null="true" />
</key>
<many-to-many class="Student" column="studentId" />
</set>请问各位大侠,在sort或order-by里写什么、怎么写?能这样实现吗?
@Entity
@Table(name="teacher_student_relation")
public class TeacherStudentRelation
{
@Id
private String id; @ManyToOne
@JoinColumn(name="teacher_id")
private Teacher teacher; @ManyToOne
@JoinColumn(name="student_id")
private Student student; private int tsLevel;
private int stLevel;
}@Entity
@Table(name="teachers")
public class Teacher
{
@Id
private String id; @OneToMany(mappedBy="teacher")
@OrderBy("tsLevel")
private List<TeacherStudentRelation> tsrList;
}@Entity
@Table(name="students")
public class Student
{
@Id
private String id; @OneToMany(mappedBy="student")
@OrderBy("stLevel")
private List<TeacherStudentRelation> tsrList;
}
大概是这么个意思