【问题标题】:What is Empty in JPA?JPA 中的空是什么?
【发布时间】:2021-09-05 02:23:47
【问题描述】:

我创建了一个客户表并为称为贷款的列

我为 1 行传递 null

我将 '' 传递给另一行

当我执行这个查询时

SELECT c FROM Customer c WHERE c.loans IS EMPTY

我什么也得不到。

【问题讨论】:

    标签: java jpa jpql


    【解决方案1】:

    IS EMPTY 运算符在逻辑上等同于 IS NULL,但用于集合。

    查询可以使用 IS EMPTY 运算符或 IS NOT EMPTY 来检查集合关联路径是否解析为空集合或具有至少一个值。

    我们可以使用 EMPTY 来检查属性是否为空。

    以下 JPQL 展示了如何使用 EMPTY 来获取没有项目的员工。

    Query unassignedQuery = 
        em.createQuery("SELECT e " +
                       "FROM Employee e " +
                       "WHERE e.projects IS EMPTY");
    

    根据 JPA 2.1 规范:

    如果没有多值关系的关联实体 从数据库中获取的实体,持久性提供程序是 负责返回一个空集合作为 关系。

    Reference

    【讨论】:

    • 所以它检查属性(这是一个集合)是否为空?
    • 这个“持久化提供者负责返回一个空集合作为关系的值。”所以它会返回空集合。
    猜你喜欢
    • 2020-11-26
    • 2020-12-04
    • 1970-01-01
    • 2011-05-27
    • 2012-04-04
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    相关资源
    最近更新 更多