使用分页检索Hibernate关联实体

时间:2015-01-23 19:04:55

标签: java oracle hibernate hibernate-mapping hibernate-criteria

我遇到了问题。我有3个表与一对多关系中的表相关联。

  • 员工可能拥有一个或多个学位。
  • 员工过去可能有一个或多个部门
  • 员工可能有一个或多个职位

我试图使用命名查询获取结果,我从Degree表和Department表中获取所有结果,但只有5个结果来自Jobs表。因为我想在Jobs表上应用分页。

但是,所有这些实体都在User表中作为一个集合。其次,我不想更改映射文件,因为相同文件的其他用法和一些架构限制。

否则在映射的情况下我可以在映射文件中使用BatchSize注释,我不愿意这样做。

1 个答案:

答案 0 :(得分:1)

最好的方法是编写三个查询:

  1. userRepository.getDegrees(用户id);
  2. userRepository.getDepartments(用户id);
  3. userRepository.getJobs(userId,pageIndex);
  4. Spring Data对于分页非常有用,也可以简化您的数据访问代码。

    单个查询中的休眠cannot fetch multiple Lists,甚至对于集合,您也不希望运行笛卡尔积。因此,请使用查询而不是单个JPQL查询。