根据条件从 Hibernate 中获取 ElementCollecion
Fetching ElementCollecion from Hibernate based on a condition
我有一个名为 User
的 class,它有一个元素集合 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
,但由于我有很多用户,执行查询需要花费很多时间(以分钟计)。
上述查询的问题是 fetch
关键字急切地从数据库中获取数据,因此只有一组在那里。我删除了 fetch
关键字并在获取 User
后初始化了组。这给出了用户的所有组。
我有一个名为 User
的 class,它有一个元素集合 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
,但由于我有很多用户,执行查询需要花费很多时间(以分钟计)。
上述查询的问题是 fetch
关键字急切地从数据库中获取数据,因此只有一组在那里。我删除了 fetch
关键字并在获取 User
后初始化了组。这给出了用户的所有组。