Java JPA查询忽略搜索字段为空的记录

时间:2017-08-23 18:13:27

标签: java jpa

此JPA查询

    @Query("SELECT e FROM MyEntity e WHERE (e.field1 IN :collectionOfField1s AND TRIM(LOWER(e.status)) <> 'deleted')")

应该返回e.field1 IN:collectionOfField1s和e.status&lt;&gt;的所有记录。 &#39;删除&#39;正如所料,但遗憾的是它没有返回e.status仍然 null (尚未填充)的记录。我想知道我需要更改什么,以便它返回所有记录,其中e.field1 IN:collectionOfField1s和e.status&lt;&gt; &#39;已删除&#39;,包括e.status为空的那些。

我很感激你的帮助。

谢谢

1 个答案:

答案 0 :(得分:2)

Null在数据库中是一个非常具体的东西,你需要以不同的方式对待它。你至少有两种方法可以达到你想要的效果。第一个是指定NULL是期望值,如下所示:

SELECT e 
  FROM MyEntity e 
 WHERE e.field1 IN :collectionOfField1s 
   AND (TRIM(LOWER(COALESCE(e.status, 'deleted'))) <> 'deleted')

另一种方法是使用一个名为COALESCE的特殊函数,如下所示:

URLSession.shared.dataTask

在这种情况下,如果找到空值,则删除&#39;应该假定价值。