エンティティ クラス Voter に名前付きクエリを作成しました
NamedQuery(name = "Voter.findvoter", query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID" and where v.password= : password),
この名前付きクエリを呼び出したいのですが、voterID とパスワードも設定する必要があります。
手伝って頂けますか。ありがとうございました
エンティティ クラス Voter に名前付きクエリを作成しました
NamedQuery(name = "Voter.findvoter", query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID" and where v.password= : password),
この名前付きクエリを呼び出したいのですが、voterID とパスワードも設定する必要があります。
手伝って頂けますか。ありがとうございました
NamedQuery アノテーションの @ 記号を見逃していると思いますか?
コードでは、次のように呼び出します。
List results = em.createNamedQuery("Voter.findvoter")
.setParameter("voterID", "blah")
.setParameter("password","blahblahblah")
.getResultList();
名前付きクエリには、問題を引き起こす明らかな問題が 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" と ":" の後のスペースを削除しました)
一般的な手順は次のとおりです(名前付きクエリまたはその他)
上記の 3 つの手順で、任意の JPA クエリを実行できます。