оператор case с группой по в именованном запросе jpa, выдающем синтаксическую ошибку?

#group-by #case #openjpa #named-query

Вопрос:

Мы получаем синтаксическую ошибку в предложении group by при использовании оператора group by с регистром в именованных запросах JPA. Мы используем openjpa. Запрос выглядит так(идентификаторы-это список в упомянутом запросе)

выберите r.город,случай, когда r.name=»тест», затем «T», иначе «N» заканчивается как выбор из проверяемого r, где r.id в группе (:идентификаторы) по городу р.,случай, когда r.name=»тест», затем «T», иначе «N» заканчивается

Комментарии:

1. Покажите ошибку, и вы, возможно, захотите упростить вещи, опробовав их; если вы знаете, что :IDS работает, создайте простой запрос, который не нуждается в фильтрации по списку, чтобы мы/вы могли сосредоточиться на группе по логике. Или попробуйте выполнить запрос без группы по и т. Д.

Ответ №1:

Попробуйте что-нибудь вроде:

 String jpqlQueryString = "select  r.city,"
  " case when r.name='test' then 'T' else 'N' end as opt "
  " from testable r "
  " group by r.city, opt";
 

Это должно сработать, а затем вы можете добавить критерии для фильтрации.

Комментарии:

1. Мы попытались выполнить приведенный выше запрос, он показывает, что запрос недействителен, ваши предложения select и having должны включать только агрегаты или значения, которые отображаются в вашем предложении группировки. Я предполагаю, что псевдоним для описания случая, вызывающего проблему.