首页 > 解决方案 > 两个参数列表中的 JPQL 条件

问题描述

我有两个参数的列表(我有子查询)

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

我想调用查询来获取对象,其中每行检查两个条件:

WHERE 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

我能够构建类似的查询,但它只需要一个 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

标签: javahibernatejpajpql

解决方案


推荐阅读