2

次の JPA クエリを使用していますが、java.lang.IllegalArgumentException: Cannot create TypedQuery for query with multiple return Exception を取得しています。

TypedQuery<RaBdrRating> uQuery = 
  (TypedQuery<RaBdrRating>)entityManager.createQuery("
     SELECT r.activePackage,SUM(r.duration),SUM(r.charge),COUNT(r) 
     FROM RaBdrRating r WHERE r.callType = :callType 
     and r.startDate between :startDate and :endDate 
     GROUP BY r.activePackage",RaBdrRating.class);

uQuery.setParameter("callType", model.getCallType());
uQuery.setParameter("startDate",startDate);
uQuery.setParameter("endDate",endDate);
List<RaBdrRating> listOfPackages = uQuery.getResultList();

私のクエリで何が間違っているのか誰か教えてもらえますか.....私はJPAが初めてで、何が問題なのか理解できず、ここで打ちのめされました。

4

2 に答える 2

3

同じエラーが発生します:要求された結果タイプを使用して複数のリターンを持つクエリのTypedQueryを作成できません

解決:

このようなクエリを持つ:

Select e.fieldA, e.fieldB, e.fieldC From Entity e

クエリで指定されたパラメータを使用してコンストラクタを宣言する必要があります。

    package somepackage;

    public class Entity {
    ...
       public class Entity() {}

       public class Entity(Type fieldA, Type fieldB, Type fieldC) {
           this.fieldA = fieldA;
           this.fieldB = fieldB;
           this.fieldC = fieldC;
       }
    ....
    }

最後に、クエリを変更します

Select NEW somepackage.Entity(e.fieldA, e.fieldB, e.fieldC) From Entity e

オブジェクトがどのように作成されるかを示しています。

于 2013-02-20T22:40:16.587 に答える
2

これはこのバグのようです: https://hibernate.onjira.com/browse/HHH-6304

バージョン 4.1.5 で修正されたようです。

于 2012-07-17T14:53:00.897 に答える