根据JPA规范:
The property or field name must correspond to that of a persistent property or field of the associated class
它解释了为什么@OrderBy(“movie.year”)无法按预期工作
除非您使用HQL查询,否则应使用封装来实现目标
@Entity
public class Actor {
private List credits = new ArrayList();
@OneToMany
@JoinColumn(name="ACTOR_ID")
public List getCredits() {
return this.credits;
}
@Transient
public List getCreditsOrderedByMovieYear() {
Collections.sort(credits, new Comparator() {
public int compare(Credits o1, Credits o2) {
// Integer implements Comparable
return o1.getMovie().getYear().compareTo(o2.getMovie().getYear());
}
});
return credits;
}
}
有时候,当Hibernate没有提供一些自定义行为时,我会使用封装来实现我的目标
问候,