java - 根据条件从 Hibernate 中获取 ElementCollecion
问题描述
我有一个名为的类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
但由于我有很多用户,执行查询需要很多时间(以分钟为单位)。
解决方案
上述查询的问题是fetch
关键字急切地从数据库中获取数据,因此只有一组存在。我删除了fetch
关键字并在获取后初始化了组User
。这给出了一个用户的所有组。
推荐阅读
- google-app-engine - BigQuery 插入错误,状态:挂起,状态码 5
- node.js - React:通过节点服务器渲染时有没有办法使用 componentDidMount()
- c# - 在单击按钮时从一个用户控件打开用户控件时出现问题 - c# winforms
- php - 使用 PHP-Symfony 将数组中的元素转换为自定义字符串
- sql - 寻找合适的表格提示组合
- webpack - 将依赖项的图像捆绑到主模块的包中
- ios - 在 iOS 中切换位置权限
- angular - 应该使用 ChangeDetectionStrategy.OnPush 来做任何事情吗?
- java - 流处理架构
- python-3.x - Pyspark:如何将火花数据帧转换为 json 并将其保存为 json 文件?