Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA查询忽略搜索字段为空的记录_Java_Jpa - Fatal编程技术网

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

Java JPA查询忽略搜索字段为空的记录,java,jpa,Java,Jpa,这个JPA查询 @Query("SELECT e FROM MyEntity e WHERE (e.field1 IN :collectionOfField1s AND TRIM(LOWER(e.status)) <> 'deleted')") @Query(“从MyEntity e中选择e,其中(e.field1 IN:collectionOfField1s和TRIM(LOWER(e.status))‘deleted’”) 应按预期返回e.field1在:collect

这个JPA查询

    @Query("SELECT e FROM MyEntity e WHERE (e.field1 IN :collectionOfField1s AND TRIM(LOWER(e.status)) <> 'deleted')")
@Query(“从MyEntity e中选择e,其中(e.field1 IN:collectionOfField1s和TRIM(LOWER(e.status))‘deleted’”)
应按预期返回e.field1在:collectionOfField1s和e.status“已删除”中的所有记录,但不幸的是,它没有返回e.status仍然为null(尚未填充)的记录。我想知道我需要更改什么,以便它返回e.field1位于:collectionOfField1s和e.status“已删除”的所有记录,包括e.status为null的记录

我非常感谢你在这方面的帮助


谢谢

Null在数据库中是一个非常特殊的东西,您需要以不同的方式对待它。你至少有两种方法来实现你想要的。第一个是指定NULL为预期值,如下所示:

SELECT e 
  FROM MyEntity e 
 WHERE e.field1 IN :collectionOfField1s 
   AND (e.status IS NULL OR TRIM(LOWER(e.status)) <> 'deleted')
选择e
来自MyEntity e
其中e.field1在:CollectionOffield1中
和(e.状态为空或修剪(较低(e.状态))‘已删除’)
另一种方法是使用称为COALESCE的特殊函数,如下所示:

SELECT e 
  FROM MyEntity e 
 WHERE e.field1 IN :collectionOfField1s 
   AND (TRIM(LOWER(COALESCE(e.status, 'deleted'))) <> 'deleted')
选择e
来自MyEntity e
其中e.field1在:CollectionOffield1中
和(修剪(较低(合并(即状态“已删除”))“已删除”)

在这种情况下,如果发现空值,则应假定为“已删除”值。

如果这是MySQL数据库,第三种方法是使用
不同于
运算符:
TRIM(LOWER(e.status))“deleted”(已删除)
感谢您的回复。我很感激。我在你的回答中使用了第一种方法,效果很好。