Spring Boot 为什么即使我提到了获取类型,@OneToMany上的急切获取也不起作用?

7qhs6swi  于 7个月前  发布在  Spring
关注(0)|答案(1)|浏览(97)

我在角色和用户之间有一个关系Map,一个角色可以Map到多个用户。尽管我提到它是一个渴望的获取,findAll或findById并没有获取目标实体列表。

Roles.java(PK - id)

@OneToMany(fetch = FetchType.EAGER, mappedBy = "roles")
@Fetch(FetchMode.SELECT)
private Set<User> users;

字符串

用户.java(有role_id列)

@ManyToOne
@JoinColumn(name = "role_id", referencedColumnName = "id")
Roles roles;


我试了findAll()findById(long),结果users的log总是空数组[]。

tjvv9vkg

tjvv9vkg1#

@Fetch(FetchMode.SELECT)对于每个单独的实体、集合或联接加载,将使用二级选择来延迟获取关联。它等效于JPA FetchType.LAZY获取策略。
看起来Hibernate在FetchType之前考虑了FetchMode。如果你想急切地获取,你可以改为

@Fetch(FetchMode.JOIN)

字符串
或者简单地从关联中删除@Fetch

相关问题