我有两个类(class)Course
和Student
。 Student
类使用 firstName
和 lastName
作为复合键。我想在 Course
类中使用 @OrderBy("firstName ASC")
,但出现错误“未找到 @OrderBy 子句的属性:Student.firstName”。
如何对其中一个组合键(例如 firstName
)进行排序?
public class Course{
@OneToMany(mappedBy="course")
@OrderBy("firstName ASC")
// Error: property from @OrderBy clause not found: Student.firstName, why?
private List<Student> students;
.....
}
public class Student{
@Id
@Column(name="first_name")
private String firtName;
@Id
@Column(name="last_name")
private String lastName;
@ManyToOne
@JoinColumn(name="course_id")
private Course course;
.....
}
最佳答案
您将其拼写错误为 firtName
- 注意 s
丢失了。解决这个问题,很可能一切都会好起来的。
[已编辑]
万一它仍然无法正常工作。尝试将其替换为 @EmbeddedId
。就像下面这样,
public class Student implements Serializable{
@EmbeddedId
private StudentPK name;
@ManyToOne
@JoinColumn(name="course_id")
private Course course;
.....
@Embeddable
public static class StudentPK implements Serializable {
@Column(name="first_name")
private String firtName;
@Column(name="last_name")
private String lastName;
....
}
}
然后它应该可以使用,
public class Course{
@OneToMany(mappedBy="course")
@OrderBy("name.firstName ASC")
private List students;
.....
}
关于java - 如何使用 @OrderBy 对 Hibernate 中的复合键之一进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6578817/