2012-04-14 41 views
3

我想就這個查詢在JPA:當屬性是對象時命名查詢?

SELECT * FROM `happyDB`.`users` U WHERE U.party_as_user =1 AND U.party_party_id =2 

這是工作正常,但我的問題是,我有Party只是作爲一個對象,而不是作爲一個ID,我不能使它發揮作用。

Users -entity這裏我試圖做的命名查詢我有以下幾點:

@JoinColumn(name = "pary_party_id", referencedColumnName = "party_id") 
@ManyToOne 
private Party partyId; 

@Column(name = "party_as_user") 
private Boolean partyAsUser; 

我試圖實現它像點符號的對象,但是這不工作:

@NamedQuery(name = "Users.findByPartyAsUser", query = "SELECT u FROM Users u WHERE u.partyAsUser = :partyAsUser AND u.partyId.partyId = :partyId") 

Party對象內有一個名爲partyId的屬性,但它不起作用。有沒有解決方案,或者我必須添加一個屬性到Users-bean,如private int partyID,並在每次將一個新的Party插入Users時填充它?

感謝您的幫助! 薩米魯米

+0

你會得到什麼錯誤?也許包括你的派對類。一般說來,關係黨,而不是partyId是有道理的。 – James 2012-04-16 13:55:31

回答

9

一般來說,你可以使用一個對象作爲JPA參數,

SELECT u FROM Users u WHERE u.partyAsUser = :partyAsUser AND u.party = :party 

Party party = new Party(id); 
query.setParameter("party", party); 

但是你有,如果你使用正確的變量名稱應是什麼,我的猜測是,

SELECT u FROM Users u WHERE u.partyAsUser = :partyAsUser AND u.party.id = :id 

如果您比對象更瞭解SQL,那麼您始終可以使用本機SQL查詢。

+0

這是我的錯誤,我甚至不需要該ID,只是反對。這只是一個愚蠢的錯誤:(謝謝! – Sami 2012-04-17 13:19:05