我在角色和用户之间有一个关系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总是空数组[]。
1条答案
按热度按时间tjvv9vkg1#
@Fetch(FetchMode.SELECT)对于每个单独的实体、集合或联接加载,将使用二级选择来延迟获取关联。它等效于JPA FetchType.LAZY获取策略。
看起来Hibernate在
FetchType
之前考虑了FetchMode
。如果你想急切地获取,你可以改为字符串
或者简单地从关联中删除
@Fetch
。