【问题标题】:JPQL returning no results when one of the fields is null当字段之一为空时,JPQL 不返回任何结果
【发布时间】:2020-12-30 01:09:40
【问题描述】:

我有一个如下所示的查询: @Query(value = "SELECT e FROM Entity e") 返回所有实体(当前为 15 个)。我只想选择某些字段以使查询的内存效率更高(有很多我不需要的嵌入式实体)。

我有 2 个多对一关系,a 和 b,其中一个通常为 null,另一个有值。如果我执行@Query(value = "SELECT e.a FROM Entity e"),我会得到 a 不为空的 10 个结果,而当我执行 @Query(value = "SELECT e.b FROM Entity e") 时,我会得到其他 5 个 b 不为空的结果。但是,如果我这样做 @Query(value = "SELECT e.a, e.b FROM Entity e") 我会得到 0 个结果。我会假设它会全部 15 个,并将其返回为 List<Object[]>。为什么会发生这种情况,我可以将其更改为 @Query(value = "SELECT e.a, e.b FROM Entity e") 返回所有实体吗?

【问题讨论】:

    标签: spring hibernate jpa jpql


    【解决方案1】:

    如果e.ae.b 是您需要的实体left join

    select a, b from Entity e left join e.a a left join e.b b
    

    【讨论】:

    • 请标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多