JPQL условие в списке двух параметров - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть список из двух параметров (я получил его с подзапросом)

LocalDate date, Long id
LocalDate date, Long id
...
LocalDate date, Long id

Я хочу вызвать запрос для получения объектов, где каждая строка проверяется на наличие двух условий:

  • id из моего списка параметров
  • для каждого идентификатора, взятого из списка параметров, дата должна быть после той, которая указана в списке параметров

ГДЕ IN здесь не применимо.

В SQL я бы попробовал с предложением JOIN, но в JPQL я не могу присоединиться к подзапросу. Как это сделать с помощью JPQL?

пример:

параметры из подзапроса

2018/01/10 1
2018/01/20 2

Данные таблицы объектов Chron

2018/01/09 1
2018/01/15 1
2018/01/25 1
2018/01/15 2
2018/01/25 2
2018/01/25 3

запрос должен возвращать объекты Chron

2018/01/15 1
2018/01/25 1
2018/01/25 2

Мне удалось создать аналогичный запрос, но он принимает только один идентификатор и дату в качестве параметра, вызывает подзапрос, чтобы получить только одну дату, а мне нужно предоставить список идентификаторов в качестве входных данных:

SELECT oc 
FROM OutletChron oc 
WHERE 
oc.outletId = :outletId AND 
oc.start >= (COALESCE( 
 (SELECT MAX(ocInner.start) 
  FROM OutletChron ocInner 
  WHERE 
   ocInner.outletId = :outletId AND 
   ocInner.start <= :from), :from)) 
ORDER BY oc.start
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...