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")

-objectpartyId内で呼び出されるプロパティがありますが、機能していません。そのための解決策はありますか、または新しいものが挿入されるたびにParty、1つのプロパティをUsers-beanのように追加して入力する必要がありますか?private int partyIDPartyUsers

助けてくれてありがとう!サミ・ヌルミ

4

1 に答える 1

10

一般に、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クエリを使用できます。

于 2012-04-16T13:58:12.237 に答える