多くのクエリ間でわずかに異なるだけの複雑な where 句がある場合、SQL では、ほとんどの where 句に基づいてビューを作成し、ビューを複数回クエリします。パフォーマンスと保守性の両方。
jpql にはこれに相当するものはありません。
私はjpql仕様ですか?何か足りない?
乾杯、フィル
直接的な答えではありませんが、Entity を SQL ビューにマップしてみませんか? 場合によっては、特にデータが読み取り専用の場合、SQL ビューが最も簡単で効果的なソリューションになります。それらを乱用しないでください。
JPA2 では、EntityManager と CriteriaQuery の組み合わせが非常に強力です。
http://java.sun.com/javaee/6/docs/api/javax/persistence/criteria/CriteriaQuery.html
CriteriaBuilder を使用して基本的な CriteriaQuery (ビューのようなもの) を定義してから、entitymanager を使用して、criteriaquery に基づくクエリを作成します。基準クエリはオブジェクトであるため、Java 側で再利用できます。
おそらくプロバイダーは、クライテリアクエリに対するキャッシングも実装していますが、それについては知りません。