簡體   English   中英

如何在JPA中查詢哪個值為null的列?

[英]How to query a column which value is null in JPA?

我正在使用JPA namedQuery從DB中選擇數據。

 @NamedQuery(name = "Concept.findByRefTableNull", query = "SELECT c FROM Concept c WHERE c.conceptName = :conceptName and c.refTable = :refTable"),

///
 List<Concept> attributeList 
                = em.createNamedQuery("Concept.findByRefTableNull")
                .setParameter("conceptName", "student").
                setParameter("refTable", null).
                getResultList();

        System.out.println(attributeList.size()); //return 0

列表大小為0,但我確信它應該有記錄。 原因是refTable。 如何在JPA中查詢哪個值為null的列?

謝謝。

只需將您的查詢更改為

 @NamedQuery(name = "Concept.findByRefTableNull", query = "SELECT c FROM Concept c WHERE c.conceptName = :conceptName and c.refTable IS NULL"),

我不確定這是否只是一個Spring Data JPA功能,但我只是在findByFieldName(Type字段)形式的存儲庫接口中編寫一個方法,其中fieldName是我需要進行空檢查的列的名稱。 然后我使用此方法並將null作為參數傳遞。

您可以使用Criteri Api,如下所示:

private Specification<Object> nullData(String field) {
    return (root, query, cb) ->
            cb.isNull(cb.lower(root.get(field)));
}

我會完全避免查詢 - 它幾乎否定了持久性抽象的意義。 通過Criteria API創建動態查詢,這將確保可移植性並且您將能夠在某種程度上切換數據庫而不會有太多麻煩

暫無
暫無

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

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