Hibernateを使用して基準を作成するとします。
Session session = (Session) entityManager.getDelegate();
Criteria rootCriteria = session.createCriteria(entityClass);
エイリアスを明示的に設定しない場合、Hibernateは"this"
エイリアスとして使用します(チェックアウトすると、CriteriaImpl
クラスにハードコードされます。
これの下位基準を作成する場合:
Criteria subCriteria = rootCriteria.createCriteria(associationPath, CriteriaSpecification.LEFT_JOIN);
Hibernateはの内部クラスであるSubcriteriaのインスタンスを作成CriteriaImpl
し、プロセスでそれにエイリアスを割り当てません。
ただし、クエリを実行してSQLログを確認すると、クエリを実行した場合にのみ、Hibernateがそのエイリアスを作成したことがわかります。これを使用してクエリに制限を追加したいのでSubcriteria
、エイリアスを生成しておくと便利です。Hibernateにそのエイリアスを生成させる方法はありますか、それともファクトリメソッドに渡す必要がありますか?