【问题标题】:Cannot create TypedQuery for query with more than one return无法为具有多个返回的查询创建 TypedQuery
【发布时间】:2012-04-20 11:31:41
【问题描述】:

我正在使用以下 JPA 查询,并且收到 java.lang.IllegalArgumentException:无法为具有多个返回异常的查询创建 TypedQuery。

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 的新手,我不知道是什么问题,在这里遇到了问题。如果有人知道请告诉我。

【问题讨论】:

标签: jpa


【解决方案1】:

我犯了同样的错误: 无法使用请求的结果类型为具有多个返回的查询创建 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

您正在指明如何创建对象。

【讨论】:

    【解决方案2】:

    这似乎是这个错误:https://hibernate.onjira.com/browse/HHH-6304

    它显然已在 4.1.5 版本中修复。

    【讨论】:

      猜你喜欢
      • 2016-02-13
      • 2021-06-09
      • 2021-12-24
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 2013-09-09
      相关资源
      最近更新 更多