我想检索在某个特定列上排序的子对象 我有父班学生
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="STUDENT_ID")
private long studentId;
@Column(name="STUDENT_NAME")
private String studentName;
@OneToMany(mappedBy="student")
private List<Phone> studentPhoneNumbers ;
}
和儿童类电话
public class Phone {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="PHONE_ID")
private long phoneId;
@Column(name="PHONE_NO")
private String phoneNumber;
@Column(name ="UPDATE_TMSTP")
private Date updateTmstp;
@ManyToOne
@JoinColumn(name = "STUDENT_ID")
private Student student;
}
我正在获取学生对象,而这反过来又给了我手机号码列表。我想要根据列updateTmstp
对这些电话号进行排序,为此我写了这个
Student stu = (Student)session.createCriteria(Student.class)
.createAlias("studentPhoneNumbers", "st").addOrder(Order.desc("st.updateTmstp")).uniqueResult();
但它不起作用。有人能帮我吗。我做错了什么?
答案 0 :(得分:0)
在studentPhoneNumbers
地点orderBy
注释下和查询中,使用加入提取来热切关注所有手机。
请注意,这意味着studentPhoneNumbers
上的所有fecth将始终生成SELECT ... ORDER BY
。如果这不是您想要的,我建议您在获得结果后在代码中对集合进行排序。