0

私はJavaで次のコードを持っています。

List<UserHelper> users=List<UserHelper>)session.getNamedQuery("PkUser.loadHelperUsers").list();

「UserHelper」クラスが何であるかは問題ではないと思うので、質問を過負荷にするためではなく、記述しません。これは上記のnamedQueryです。

 @NamedQuery(name = "PkUser.loadHelperUsers", query = "SELECT  new ge.tec.pto.ext.helpers.UserHelper(u) from PkUser u order by u.pkUserId desc"),

問題は、hql が選択する行が多すぎることです。pk_user テーブルのデータベースにある行と同じ数だと思います。誰かがこれを修正する方法を知っている場合は、私に知らせてください。ソリューションが私の "NamedQuery" を変更する必要がない場合は非常に良いでしょう. クエリの作成のみを変更する必要がある場合は素晴らしいです. しかし、どのソリューションも役に立ちます. ありがとうございます.

4

1 に答える 1

0
Multiple selects when using Key word “`new`” in `hql`


There is no problem with your code and with NEW keyword .

あなたのクエリは、関連するreturnすべての行になりますUserHelperTable

必要な行を取得するには、WHERE 句を使用する必要があります。

元 :

query = "SELECT  new ge.tec.pto.ext.helpers.UserHelper(u) from PkUser u where username=:passedparamer order by u.pkUserId desc"
于 2013-02-12T12:18:48.583 に答える