Вопрос

В JPQL я хочу построить эквивалентный запрос к этому:

select *, count(*) as finger_count from page_delta_summary 
where delta_history_id = ? and change_type = ? group by fingerprint;

куда fingerprint Является ли Varchar Field в таблице page_delta_summary. Отказ То, что у меня есть это:

select d, count(d) as finger_count from PageDeltaSummary d 
where d.deltaHistoryId = :deltaHistoryId and d.type = :pageDeltaType 
GROUP BY d.fingerprint"

куда PageDeltaSummary Является ли моя сущность. Но я получаю следующее исключение:

org.apache.Openjpa.persistence.argumentexception: Ваш запрос на тип «Класс COM.su3analytics.sizedaelta.Model.pagedeltasummary» с фильтром «Выбрать D, count (d) из PageEltEltasummary d где d.deltahistoryid =: deltahistoryid и d.type =: Группа PagedEltAtype по D.FINGRINTPRINT "недействительна. Ваш выбор и имеющие предложения должны включать только агрегаты или значения, которые также отображаются в пункте вашей группировки.

Запрос работает нормально, если я удаляю либо количество (d) как Permer_Count или Group.

Какие-либо предложения?

Спасибо

Это было полезно?

Решение

Ваш оригинальный запрос SQL не имеет смысла, поэтому вы не можете преобразовать в JPQL.

Я думаю, вы хотите получить счет page_delta_summary Строки удовлетворяют where Условия для каждого fingerprint. Отказ Если это так, SQL-запрос выглядит так:

select fingerprint, count(*) as finger_count from page_delta_summary  
where delta_history_id = ? and change_type = ? group by fingerprint;

И JPQL - нравится это:

select d.fingerprint, count(d) from PageDeltaSummary d    
where d.deltaHistoryId = :deltaHistoryId and d.type = :pageDeltaType    
GROUP BY d.fingerprint

Эти запросы возвращает парыfingerprint, finger_count> вместо полной page_delta_summary строки (или объекты).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top