次の JPA 2.0 準拠の JPQL クエリを検討してください。
SELECT p
FROM PostalAddress p
JOIN p.constituent c
WHERE c.id = :constituentId
ORDER BY p.type.displayOrder
...と:
SELECT p
FROM PostalAddress p
JOIN p.constituent c
JOIN p.type t
WHERE c.id = :constituentId
ORDER BY t.displayOrder
どちらの場合も、p.typeは@ManyToOne別のエンティティ ( PostalAddressType) との関係です。
2 つのクエリの違いは、最初のクエリには明示的なJOINfrom PostalAddresstoがないことPostalAddressTypeです。それは、節のp.type.displayOrderスニペットを通して暗示されていると思います。WHERE2 番目には、明示的な がありJOINます。
これらのクエリは同等ですか?
それらは以下と同等ですか:
SELECT p
FROM PostalAddress p
WHERE p.constituent.id = :constituentId
ORDER BY p.type.displayOrder
...?
そのようです。これらの場合、明示的なJOINs (との間、PostalAddressおよびConstituentとの間) は何らかの形で (読みやすさと明示性以外に) 役立ちますかPostalAddress?PostalAddressType
JOIN完全を期すために、パス式がコレクションに評価される場合は a が常に必要であることを理解しています。私は (現時点では :-)) そのケースには興味がありません。