使用SUM和COUNT的JPQL本机查询

Kev*_*vin 2 java sql jpa eclipselink jpql

我试图运行以下代码:

public BigDecimal valuate(String searchTerms, String categoryPath) {
    Query query = em.createNativeQuery("SELECT SUM(maxBidAmount) / COUNT(maxBidAmount) FROM Item WHERE MATCH(title) AGAINST(':searchTerms') AND categoryPath=':categoryPath'", Double.class);
    query.setParameter("searchTerms", searchTerms);
    query.setParameter("categoryPath", categoryPath);
    double value = (double) query.getSingleResult();
    return new BigDecimal(value);
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到以下异常:

Exception Description: Missing descriptor for [class java.lang.Double].
Run Code Online (Sandbox Code Playgroud)

当我删除时Double.class,我得到一个不同的例外.

所以,我只是想知道在JPQL中使用COUNT和SUM的正确方法.

Chr*_*ris 6

如果SQL有效,则不需要在查询中指定Double.class - 只需使用em.createNativeQuery(SQLString); 如果希望JPA提供程序根据结果构建实体,则使用返回类型,但在这种情况下,您需要原始数据.