我正在使用Spring数据JPA我有一个类似于
的表 NAME AGE GANG
---------------------------------
Iron Man 46 1
Black Panther 45 1
Captain America 96 2
Ant Man 40 2
The hulk 48 3
我想将此映射到下面的类而没有N + 1选择问题
public class Gang {
private int id;
private List<Member> members;
}
public class Member {
private String name;
private int age;
}
我尝试与@OneToMany一起自我加入,但我无法通过。有什么想法吗?
答案 0 :(得分:0)
通过确保初始查询获取在适当初始化状态下加载所需对象所需的所有数据来解决此问题。一种方法是使用HQL
获取连接。我们使用HQL
如果第一个查询填充主对象并且第二个查询为返回的每个唯一主对象填充所有子对象,则可能发生N + 1问题。
要解决N+1 SELECTs
问题,请使用HQL
join fetch
"from Gang gang join fetch gang.member Member"
现在,在结果生成的SQL中,您可以在Left outer join
Member
上看到entity
Gang
的{{1}}。