jpa - 无法为具有多个返回值的查询创建 TypedQuery

标签 jpa

我正在使用以下 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 的新手,我不明白问题是什么,所以在这里遇到了问题。如果有人有想法,请告诉我。

最佳答案

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

您是在说明如何创建对象。

关于jpa - 无法为具有多个返回值的查询创建 TypedQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10245397/

相关文章:

java - 哈希码是否用于加速集合中的对象查找?

jpa - @ManyToOne 可选标志与 @JoinColumn 可为空标志有什么区别?

java - 如何以供应商中立的方式使用 JPA?

jpa - 计算 JPA 和无效路径

java - 在 Hibernate/JPA 中将货币存储为 BigDecimal -decimal(19,2)

java - 在类层次结构中使用注入(inject)的 EntityManager

jpa - Kotlin JPA 继承建议

java - 使用 jpa 在 jax-rs Rest 服务中使用泛型的障碍

hibernate - JPA/hibernate : How insert a default value for a @ManyToOne where the value represents a null entry

java - 如何从 org.springframework.data.repository.CrudRepository 后代取消代理子对象