Исходный запрос JPQL с использованием SUM и COUNT

Я пытаюсь запустить следующий код:

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 , я получаю другое исключение.

Итак, мне просто интересно, как правильно использовать COUNT и SUM с JPQL.

ЕСЛИ SQL действителен, вам не нужно указывать Double.class в определении запроса – просто используйте em.createNativeQuery (SQLString); Тип возврата используется, когда вы хотите, чтобы поставщик JPA создавал сущность из результатов, но в этом случае вам нужны необработанные данные.

Собственный запрос – это SQL , а не JPQL , и вы используете эти ключевые слова, как и любой SQL для вашей РСУБД. Похоже, ваш провайдер JPA не принимает Double в качестве результата класса (некоторые только позволяют классу result быть Entity).

DataNucleus JPA, конечно, допускает классы результатов без Entity.