相关疑难解决方法(0)

FetchMode连接对Spring JPA存储库中的ManyToMany关系没有任何区别

我正在尝试这样做:

//...
class Person {
    @ManyToMany(fetch = FetchType.EAGER)
    @Fetch(FetchMode.JOIN)
    private Set<Group> groups;
//...
}
Run Code Online (Sandbox Code Playgroud)

当我personRepository.findAll();通过Spring JPA存储库时,它会生成n + 1个查询,就好像我没有任何@Fetch集合一样.(一个查询首先获取所有人,然后每个人查询一次以获取组).

但是,使用@Fetch(FetchMode.SUBSELECT) 作品!它只生成2个查询.(一个适用于所有人,一个适用于团体).所以hibernate会对一些 fetch参数作出反应,而不是JOIN.

我也试过EAGER没有运气去除取物.

//...
class Person {
    @ManyToMany()
    @Fetch(FetchMode.JOIN)
    private Set<Group> groups;
//...
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Spring JPA,这是我的存储库的代码:

public interface PersonRepository extends JpaRepository<Person, Long> {
}
Run Code Online (Sandbox Code Playgroud)

JOIN是不是通过Spring JPA工作,还是我做错了什么?

java spring hibernate jpa spring-data

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

spring ×1

spring-data ×1