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

时间:2013-02-27 16:57:58

标签: jpa jpa-2.0

我有一个以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字符串来完成它。

1 个答案:

答案 0 :(得分:-4)

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

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

SELECT * FROM SOMETABLE WHERE :list IS EMPTY

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

如果:list不为空:...WHERE x.id IN :list

如果:list为空:(NO WHERE CLAUSE AT ALL)