簡體   English   中英

Java JPA查詢將忽略搜索字段為null的記錄

[英]Java JPA query is ignoring records where a searched field is null

此JPA查詢

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

應該會按預期返回e.field1 IN:collectionOfField1s和e.status <>被“刪除”的所有記錄,但是不幸的是,它沒有返回e.status仍然為null (尚未填充)的記錄。 我想知道我需要更改什么,以便它返回e.field1 IN: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')

另一種方法是使用稱為COALESCE的特殊功能,如下所示:

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

在這種情況下,如果找到空值,則應假定為“已刪除”值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM