是否可以在JPA中传递并测试空列表?

我有一个JPQL命名查询,它将List作为参数.我正在使用IN短语中的参数:

...WHERE x.id IN :list

我想做类似以下的事情,但语法显然不会让我:

...WHERE :list IS EMPTY OR x.id IN :list

也不会:

...WHERE SIZE(:list) = 0 OR x.id IN :list

我在JPA 2.0命名查询中尝试做什么是不可能的?我知道如何通过条件API或使用普通的旧JPQL字符串来完成它.

最佳答案
你在查询中尝试做什么似乎是没有意义的.您正尝试使用参数的状态来限制查询结果.但是,您不要将此参数与您的选择中的任何内容进行比较.

想想这个查询(没有意义):

SELECT * FROM SOMETABLE WHERE :list IS EMPTY

所以我认为在选择两个不同的查询之前,你需要检查:list是否为空:

if:list不为空:… WHERE x.id IN:list

如果:列表为空:(没有全部条款)

转载注明原文:是否可以在JPA中传递并测试空列表? - 代码日志