20

エンティティ クラス Voter に名前付きクエリを作成しました

NamedQuery(name = "Voter.findvoter", query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID" and where v.password= : password),

この名前付きクエリを呼び出したいのですが、voterID とパスワードも設定する必要があります。

手伝って頂けますか。ありがとうございました

4

4 に答える 4

38

NamedQuery アノテーションの @ 記号を見逃していると思いますか?

コードでは、次のように呼び出します。

List results = em.createNamedQuery("Voter.findvoter")
    .setParameter("voterID", "blah")
    .setParameter("password","blahblahblah")
    .getResultList();
于 2010-04-30T12:17:24.343 に答える
4

名前付きクエリには、問題を引き起こす明らかな問題が 2 つあります。

  • これは注釈であるため、@NamedQuery単なるものではないはずですNamedQuery
  • あなたのクエリは現在:

query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID" and where v.password= : password.

問題は、 String を after:voterIDではなく , after で終了:passwordし、「where」が 2 回あり、「:」と「password」の間にスペースがあることです。クエリは次のようになります。

query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID and v.password= :password"

(" を最後に移動し、2 番目の "where" と ":" の後のスペースを削除しました)

于 2012-06-22T14:31:24.410 に答える
2

一般的な手順は次のとおりです(名前付きクエリまたはその他)

  1. クエリを作成する - em には 5 つの作成メソッドがあります。
  2. 必要に応じてパラメーターを使用してクエリを設定します。クエリ インターフェイスにはこれらのメソッドがあります。
  3. クエリを実行します。クエリ インターフェイスには、実行に関連する 3 つのメソッドがあります。

上記の 3 つの手順で、任意の JPA クエリを実行できます。

于 2010-05-05T21:13:01.747 に答える