加入获取嵌套集合

问题描述

我的实体结构如下:

E1
  List<E2> e2s; //OneToMany relation

E2
  E3 e3;
    E4 e4
      List<E5> e5s; //OneToMany relation

默认情况下,所有集合都是延迟加载的。我想定义一个JPA查询,以期获取位于E1较深级别的E5列表。

我尝试了以下查询:

"SELECT e1 FROM E1 e1" +
            " LEFT JOIN FETCH e1.e2s AS e2s" +
            " JOIN e2s.e3 AS e3" +
            " LEFT JOIN FETCH e3.e4.e5s";

"SELECT e1 FROM E1 e1" +
            " LEFT JOIN FETCH e1.e2s AS e2s" +
            " LEFT JOIN FETCH e2s.e3.e4.e5s";

导致query specified join fetching,but the owner of the fetched association was not present in the select list错误。

"SELECT e1 FROM E1 e1" +
            " LEFT JOIN FETCH e1.e2s.e3.e4.e5s";

导致illegal attempt to dereference collection [e1.e2s]错误

"SELECT e1 FROM E1 e1" +
            " LEFT JOIN FETCH e1.e2s AS e2s" +
            " JOIN e2s.e3 AS e3" +
            " JOIN e3.e4.e5s";

这不会初始化e5s集合。

使用Hibernate JPA 2.1

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)