我遇到了一个问题。我有 3 个表与一对多关系中的表相关联。
- 员工可以拥有一个或多个学位。
- 员工过去可能有一个或多个部门
- 员工可能有一个或多个工作
我正在尝试使用命名查询获取结果,以便从学位表和部门表中获取所有结果,但从作业表中获取仅 5 个结果。因为我想在作业表上应用分页。
但是,所有这些实体都作为一个集合在用户表中。其次,由于相同文件的其他用法以及一些体系结构限制,我不想更改映射文件。
否则,在映射的情况下,我可以在映射文件中使用 BatchSize 注释,但我不愿意这样做。
最好的方法是编写三个查询:
- userRepository.getDegrees(userId);
- userRepository.getTDepartment(userId);
- userRepository.getJobs(userId, pageIndex);
Spring 数据对于分页以及简化数据访问代码非常有用。
Hibernate无法在单个查询中获取多个列表,即使对于Sets,您也不想运行笛卡尔乘积。因此,请使用查询而不是单个 JPQL 查询。