考虑以下符合 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)。
这两个查询的区别在于第一个查询没有明确JOIN的 from PostalAddressto PostalAddressType。我猜,这是通过子句p.type.displayOrder中的片段暗示的。WHERE在第二个中,有一个明确的JOIN.
这些查询是否等效?
它们是否也等同于:
SELECT p
FROM PostalAddress p
WHERE p.constituent.id = :constituentId
ORDER BY p.type.displayOrder
...?
似乎是这样。在这些情况下,显式JOINs(在PostalAddress和之间、和和Constituent之间)是否有任何帮助(除了可读性和显式性)?PostalAddressPostalAddressType
为了完整起见,我知道JOIN如果路径表达式计算为集合,则始终需要 a ;我(目前:-))对此案不感兴趣。