如何在 JPA 存储库中创建使用 listagg 的子查询?
How to create a subquery that uses listagg in JPA repository?
使用 JPA 规范 类 或谓词生成器。如何转换此 WHERE 子句?
我正在使用 oracle 数据库。
WHERE (SELECT listagg(reject_cd,':') within group (order by order_no) as rejectList
FROM REJECT_TABLE WHERE ID = transactio0_ id group by id) like '%06%'
LISTAGG
函数高度特定于 Oracle,不受 JPQL 支持。但是,您仍然可以在此处使用本机查询,例如
@Query(
value = "SELECT ... WHERE (SELECT LISTAGG(reject_cd,':') WITHIN GROUP (ORDER BY order_no) AS rejectList FROM REJECT_TABLE WHERE ID = transactio0_ id GROUP BY id) LIKE '%06%'"
nativeQuery = true)
Collection<SomeEntity> findAllEntitiesNative();
这里的另一个选择可能是找到一种避免需要使用 LISTAGG
的方法。但是,我们需要查看完整的查询以及示例数据才能更好地理解您的要求。
使用 JPA 规范 类 或谓词生成器。如何转换此 WHERE 子句? 我正在使用 oracle 数据库。
WHERE (SELECT listagg(reject_cd,':') within group (order by order_no) as rejectList
FROM REJECT_TABLE WHERE ID = transactio0_ id group by id) like '%06%'
LISTAGG
函数高度特定于 Oracle,不受 JPQL 支持。但是,您仍然可以在此处使用本机查询,例如
@Query(
value = "SELECT ... WHERE (SELECT LISTAGG(reject_cd,':') WITHIN GROUP (ORDER BY order_no) AS rejectList FROM REJECT_TABLE WHERE ID = transactio0_ id GROUP BY id) LIKE '%06%'"
nativeQuery = true)
Collection<SomeEntity> findAllEntitiesNative();
这里的另一个选择可能是找到一种避免需要使用 LISTAGG
的方法。但是,我们需要查看完整的查询以及示例数据才能更好地理解您的要求。