2013-02-11 26 views
0

我可能是密約這一點,但查詢不能返回我期待的結果...javax.persistence NamedQuery工作不正常

我有兩個表(單位):屬性和鬥地主如下所示:

屬性由以下字段組成:Id,propertyRef和landLordsid(這是與表格鬥地主的多對一連接)。

房東是由字段(其中包括):Id,landlordName和一對多的加入收集。

我希望查詢返回房東的所有屬性,如通過Integer參數'landLord'傳入的,例如,如果參數爲2,則過濾爲等於2的Properties.landLordsid。這是我正在使用的NamedQuery,但它返回所有屬性,似乎沒有過濾。

SELECT p 
from Properties p 
JOIN p.landLordsid l 
WHERE l.id = :landLord 

任何想法查詢有什麼問題?

回答

0

讓Hibernate做的你加入:

這HQL應該工作:

from Properties p 
where p.landLord.id = :landLord 

注意如何加入是隱含的,是 「SELECT *」 也暗示。

+0

感謝您的幫助波西米亞。事實證明,我將前一個查詢中Map的錯誤副本傳遞給了應用程序客戶端,因此結果沒有改變!但至少現在我已經知道一個加入和一個選擇可以被暗示。 – 2013-02-11 20:47:03

+0

這是一個更清晰的例子來寫'where p.landLord =:landLord'或'p.landLord.id =:landLordId'。我個人更喜歡前者。 – carbontax 2013-02-12 13:31:24