2016-05-12 2 views
1

Я пытаюсь написать следующий SQL запрос с использованием JPA Criteria APIJPA Критерии: в пункте со многими колоннами

SELECT * FROM Table1 a 
WHERE (a.category, a.priority) IN (
SELECT a1.category, max(a1.priority) FROM Table1 a1 GROUP BY a1.category 
) 

Функционально запрос выберите элемент Table1 с наивысшим приоритетом для каждой категории.

categoryPriority = // defines the pair category/priority 
mySubQuery = // defines the subquery 
query.where(categoryPriority.in(mySubQuery) 

Это схематически то, что я ищу.

Определение подзапроса не является проблемой, поскольку оно хорошо документировано.

Но я не могу найти способ определить пару (a.category, a.priority).

ответ

3

Несколько столбцов в предложении IN не предусмотрено в JPA. Я думаю, вам нужно будет использовать собственный запрос.

Код: query for select which multiple values in the “IN” clause

+2

Спасибо вам за ваш ответ. Поскольку я не хочу использовать собственные запросы, я заменил большую часть столбца на уродливую конкатенацию значения столбцов категории и приоритета, но я немного разочарован. –

Смежные вопросы