我有一个以List
为参数的JPQL命名查询。我在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字符串来完成它。
答案 0 :(得分:-4)
您在查询中尝试做的事情似乎没有意义。您正尝试使用参数的状态来限制查询结果。但是,您不要将此参数与您选择中的任何内容进行比较。
想想这个查询(没有意义):
SELECT * FROM SOMETABLE WHERE :list IS EMPTY
所以我认为在选择两个不同的查询之前,你需要检查:list是否为空:
如果:list
不为空:...WHERE x.id IN :list
如果:list
为空:(NO WHERE CLAUSE AT ALL)