我使用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