从JPA中的顺序左连接请求中检索一组对象

时间:2019-04-15 07:46:08

标签: mysql jpa

我使用MySQL和JPA 1.9.4

我想检索具有所有完整表B和子表D(其中D是集合)的对象A的列表。

实体A:id b_id(多至1)编号 实体B:id c_id(许多)到b_d(许多) 实体C:编号 实体D:ID名称 实体B_E:b_id(多至1)d_id(多至1)

我成功使用以下查询检索了对象A以及对应的对象B和C的列表:

 @Query(value =
    "SELECT a1.* " +
    "FROM A a1 " +
    "LEFT JOIN B b1 ON a1.b_id = b1.id " +
    "LEFT JOIN C c1 ON b1.c_id= c1.id " +
    "WHERE c1.number= ?1 AND a1.number= ?2 " +
    "ORDER BY b1.number ASC ;", nativeQuery = true)

这样,我无法成功获取A内B内D的集合。通常会引发以下错误:

Unable to evaluate the expression Method threw 'org.hibernate.LazyInitializationException'

本机查询不接受联接提取。当我尝试不使用本机查询时,我不会成功使用连续的多重联接和提取。

我也尝试过:

 @Query(
    "SELECT a1" +
        "FROM A a1" +
        "LEFT JOIN FETCH a1.b b1" +
        "LEFT JOIN FETCH b1.c bc1" +
        "LEFT JOIN FETCH b1.d b1d" +
        "WHERE bc1.number = ?1 AND a1.number= ?2 " +
        "ORDER BY b1.number ASC")

语法似乎不好,不够。

可以帮我吗?

谢谢

Manu

0 个答案:

没有答案