【发布时间】:2020-06-23 07:20:44
【问题描述】:
我有一个名为 User 的类,它有一个元素集合 groups,如下所示:
public class User {
@ElementCollection
@CollectionTable(name = "user_groups", joinColumns = @JoinColumn(name = "id"))
private Set<String> groups;
//Other fields
}
现在我需要根据组名获取用户列表。查询是这样的:
@Query("select distinct user from User user " +
"left join fetch user.groups groups " +
"where :groupName IN groups")
List<User> findUsersByGroupName(@Param("groupName") String groupName);
这工作正常,但在获取的 User 对象中,我只得到一组(我正在传递)。我需要获取的对象中的所有 User 组。我怎样才能有效地做到这一点?
我尝试过使用elements 和member of,但由于我有很多用户,执行查询需要很多时间(以分钟为单位)。
【问题讨论】:
-
你使用什么数据库?恐怕,要使这个查询高效并适合您的需要,您应该为此编写一个 sql 本机查询。
-
@SternK 感谢您的回复。我正在使用 Postgres。我已经通过删除 fetch 关键字并在获取用户后初始化集合来解决上述问题。
标签: java hibernate spring-data-jpa hql