【问题标题】:EclipseLink Fech Join return empty result when there are no children没有孩子时,EclipseLink Fech Join 返回空结果
【发布时间】:2023-03-09 19:32:02
【问题描述】:

我有两张表,Parent 和 Child,当然 Parent 可以有很多 Child。

使用 JPA 和 Eclipselink,我想在一个请求中获取父母和他所有的孩子。

我尝试过这样的提示:

@NamedQuery(name = "Parent.findWithChildren", query = "SELECT m FROM Parent m WHERE m.id=:id",
        hints = {
            @QueryHint(name = QueryHints.FETCH, value = "m.childList"),
        }
)

运行良好,并产生一个获取所有请求的请求。 请求类似于:

 SELECT * FROM parent, child where ....

你看,没有明确的“加入”关键字。

但是,如果父级还没有子级,则根本不返回父级,而是返回并清空结果。我该如何解决?

【问题讨论】:

    标签: sql jpa eclipselink java-ee-7


    【解决方案1】:

    The documentation 解释了一切:

    这使用 INNER 连接,并将过滤空值或空值,请参阅 LEFT_FETCH 了解外连接。

    因此,请改用 LEFT_FETCH,或者更好的是,使用不需要任何专有查询提示的标准 JPQL 查询:

    select m from Parent m left join fetch m.childList where m.id = :id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多