java - 两个参数列表中的 JPQL 条件
问题描述
我有两个参数的列表(我有子查询)
LocalDate date, Long id
LocalDate date, Long id
...
LocalDate date, Long id
我想调用查询来获取对象,其中每行检查两个条件:
- id 来自我的参数列表
- 对于从参数列表中获取的每个 ID,日期应在参数列表中提供的 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
解决方案
推荐阅读
- html - Transparent Scrollbar Is Not Rendering Child Items Behind It
- reactjs - 带有反应钩子的值流
- windows - 是否可以使用 net-core 创建独立的可执行文件?
- jquery - jQuery each() 循环遍历列表项并分别为每个项目做一些事情
- exception - Why is TcpClient.Connect() throwing System.AggregateException
- python - How to add legend to Folium map created with GeoJson?
- amazon-web-services - AWS on Terraform - 如何避免“强制使用新资源”
- pycharm - 如何导入 PyCharm 设置?
- python - 我怎么能不重复猜测?
- performance - HMGET 与字段数和读取性能之间的相关性