データベースにクエリを実行し、entity.fieldA に基づいて結果セットを並べ替えるときに問題が発生します。
たとえば、学校のコンテキスト (学生、教師) で。私には多くの生徒がいる先生がいます。
//Student class
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TEACHER_ID")
private Teacher teacher;
そして、クエリを teacher.name でソートしたいのですが、教師しか利用できません。
したがって、クエリがあります:
FROM Student s ORDER BY s.teacher;
同等の教師を実装しても機能しませんでした:
@Override
public int compareTo(Teacher o) {
return getName().compareTo(o.getName());
}
私のクエリ:
from Student a left join fetch a.teacher where a.xid=:xxx ORDER BY a.teacher ASC
私はa.teacher.nameでソートできないフレームワークを持っているので、a.teacherを使用してComparableインターフェースを実装しても、a.teacher.nameでソートできるかどうかを尋ねています。
この問題は、遅延ロードされた dataTable に起因します。エンティティ列をクリックして並べ替えると、フィールドではなくエンティティ名のみが表示されます。
何か案が?