我正在使用带有 Java 的 Hibernate 3。
我的 POJO 类如下:
教师.java
private long id;
private String teacherName;
private List<Student> students;
// getter-setter of all
学生.java
private long id;
private String studentName;
// getter-setter of both
教师.hbm.xml
<class name="Teacher" table="teacher_master">
<id name="id" column="id" type="long">
<generator class="native"></generator>
</id>
<property column="teacher_name" name="teacherName" type="string" />
<list name="students" cascade="refresh">
<key column="teacher_id"/>
<index column="student_position" type="integer"/>
<one-to-many class="Student"/>
</list>
</class>
Student.hbm.xml包含id和studentName属性的映射。
我的数据库结构如下所示:
师父
id | teacher_name
----|--------------
1 | teacher1
2 | teacher2
学生大师
id | student_name | teacher_id | student_position
----|---------------|-------------|------------------
1 | student1 | 1 | 0
2 | student2 | 1 | 2
3 | student3 | 1 | 1
现在我想按照 student_position 的顺序获取所有 id = 1 的 Teacher 附加的 Student 。
我写了以下标准:
List<Long> ids = new ArrayList<Long>();
ids.add(1l);
ids.add(2l);
ids.add(3l);
Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.in("id", ids));
List<Student> students = criteria.list();
这里同学们会按照主键1,2,3的顺序给我记录。
我希望这些记录按其student_position的顺序排列,即 1、3、2。
我怎样才能做到这一点?