2012-04-14 11 views
3

私はJPAでこのクエリを作成したいと思います:プロパティがオブジェクトである場合の名前付きクエリですか?

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

これは正常に動作しているが、私の問題は、私は唯一のオブジェクトとしてではなく、IDとしてPartyを持っていると私はそれを動作させることができないということです。

私は、次のしているという名前のクエリを実行しようとしています 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というプロパティがありますが、機能しません。そのための解決策はありますか、private int partyIDのような1つのプロパティをUsers-beanに追加して、新しいPartyUsersに挿入されるたびに入力する必要がありますか?

ありがとうございます! サミヌルミ

あなたはJPAのパラメータとしてオブジェクトを使用することができ、一般的に
+0

どのようなエラーが表示されますか?おそらくあなたのPartyクラスを含むでしょう。パーティーの代わりに関係者を呼び出すのが一般的です。理にかなっています。 – James

答えて

9

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

関連する問題