2012-02-06 86 views
1

JPA加載對象我有一個名爲Customer.java一個JPA對象:與命名查詢

@NamedQueries({@NamedQuery(name="getAccountWithCheckRangeByService", 
query="SELECT c FROM Customer"}) 
public Long Id; 
public Address address; 
//getter and setter 
} 

現在,如果我調用命名查詢並加載Custoemr對象。然後如果我做c.getAddress(),我會得到地址加載?或者我需要編寫一個單獨的命名查詢來加載地址

回答

1

你可能是指SELECT c FROM Customer c

如果要確保地址已加載,則可以使用fetch joins

SELECT c FROM Customer c JOIN FETCH c.address

0

試一下 - 看看會發生什麼。如果地址是一個獨立的實體,那麼是的,它會加載所有的依賴實體 - 在這種情況下,你沒有註釋客戶和地址之間的關係是什麼,但我猜你已經省略了。您可以使它對關係註釋執行延遲加載,例如@OneToMany(fetch = FetchType.LAZY)。如果address只是Customer中的一列,那麼yes會加載它,雖然你的JPQL語法有點奇怪 - 我會做「SELECT c FROM Customer c」。不確定您的命名查詢是否可以正常工作,但是如果您已經嘗試過,則必須這樣做。