两个参数列表中的JPQL条件

时间:2018-09-12 12:18:40

标签: java hibernate jpa jpql

我有两个参数的列表(我通过子查询得到了它)

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

我想调用查询来获取对象,在该对象中检查每行是否有两个条件:

  • id来自我的参数列表
  • 对于从参数列表日期获取的每个id,应在pa​​ramneter列表中提供的ID之后

这里的位置似乎不适用。

在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

我能够构建类似的查询,但是它只使用一个ID和日期作为参数,调用子查询仅获得一个日期,而我需要提供ID列表作为输入:

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

0 个答案:

没有答案