如何在JPA中使用FetchMode.JOIN?

时间:2017-03-31 11:33:59

标签: hibernate jpa spring-data spring-data-jpa

我正在使用Spring Boot,JPA和Hibernate。我有以下实体participantIds,它与User

有关系
roles

当我读取用户时,hibernate会为每个附加角色生成一个选择,而不是使用Join。在纯Hibernate中,我会通过添加

来解决这个问题
@Table
public class User {

    @OneToMany(fetch = EAGER)
    @JoinColumn(name = "role_id")
    private Set<Role> roles;

    // ...

}

但这似乎没有任何效果。

是否有可能为有关此实体的所有查询设置首选获取模式?

我找到了一个解决方法,我真的认为这是一种解决方法,因为我需要为每个查询指定它,是这样的:

@Fetch(FetchMode.JOIN)

1 个答案:

答案 0 :(得分:0)

对此很晚, 但是您需要定义父实体和相关实体之间的联接

Join<MyEntity, RelatedEntity> join = root.join("relatedEntity");
root.fetch("relatedEntity");