我正在使用以下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的新手,我没有得到什么问题并在这里打了个招呼。如果有任何想法请告诉我。
答案 0 :(得分:2)
这似乎是这个错误:https://hibernate.onjira.com/browse/HHH-6304
版本4.1.5中显然已修复。
答案 1 :(得分:2)
我也犯了同样的错误: 无法使用请求的结果类型
为具有多个返回的查询创建TypedQuery解决方案:
有这样的查询:
Select e.fieldA, e.fieldB, e.fieldC From Entity e
您必须使用query:
中指定的参数声明构造函数 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
您正在指示如何创建目标。