[英]How to perform an EAGER fetch in JPQL
我想知道在JPQL中(而不是在實體映射上)如何急切地顯式獲取關聯的字段。
我有ContactAddressLink
(為簡潔起見,請注意注釋)
class ContactAddressLink {
Contact contact;
Address address;
... some extra fields ...
}
所以我有一個查詢
select cal from Contact c, Address a, ContactAddressLink cal where
cal.contact = c and cal.address = a
這給了我期望的查詢。 但是,由於我會在看到一系列查詢獲取每個地址之后使用這些地址。
我想做的是
select cal eager fetch cal.a from Contact c, Address a, ContactAddressLink cal where
cal.contact = c and cal.address = a
我記得看到過類似的東西,但我不記得確切的語法。
對。 你是對的。 語法為[inner|left] join fetch
。 范例:
select cal from ContactAddressLink cal
inner join fetch cal.contact c
inner join fetch cal.address a
where cal.id = 123456789
如果要與具有Contact
/ Address
ContactAddressLink
匹配,請使用inner join fetch
。
如果即使沒有Contact
/ Address
也要匹配ContactAddressLink
,請使用left join fetch
。
請記住,按照JPA Specification
所有@OneToOne
和@ManyToOne
被急切獲取。 如果沒有,則應將其更改為惰性,否則將始終獲取那些對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.