繁体   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