【发布时间】:2012-02-16 02:27:20
【问题描述】:
我正在尝试运行以下代码:
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);
}
当我这样做时,我得到以下异常:
Exception Description: Missing descriptor for [class java.lang.Double].
当我删除 Double.class 时,我得到一个不同的异常。
所以,我只是想知道在 JPQL 中使用 COUNT 和 SUM 的正确方法。
【问题讨论】:
-
使用 hibernate 4 和 Oracle 驱动程序并且没有明确指定类型,我得到“Number”作为类,它可以与 Number#intValue() 一起使用。也许你可以试试
Number.class而不是Double.class? int value = ((Number)query.getSingleResult()).intValue();
标签: java sql jpa eclipselink jpql