【发布时间】:2012-03-14 03:59:35
【问题描述】:
这似乎是多年来众所周知的问题,可以在此处阅读: http://blog.xebia.com/2008/12/11/sorting-and-pagination-with-hibernate-criteria-how-it-can-go-wrong-with-joins/
甚至可以在 hibernate faqs 中找到参考:
这也曾在 SO 上讨论过
How to get distinct results in hibernate with joins and row-based limiting (paging)?
问题是,即使经过所有这些资源,我也无法解决我的问题,这似乎与这个标准问题有点不同,虽然我不确定。
这里提出的标准解决方案涉及创建两个查询,第一个用于获取不同的 ID,然后在更高级别的查询中使用这些查询来获得所需的分页。在我的情况下,休眠类类似于
A
- aId
- Set<B>
B
- bId
在我看来,子查询对我来说似乎工作正常,并且能够获得不同的 aId,但应该进行分页的外部查询再次获取重复项,因此子查询中的不同是有没有效果。
假设我有一个 A 对象,其中包含一组四个 B 对象,我的分析是因为引入了集合,同时获取数据
session.createCriteria(A.class).list();
hibernate 在列表中填充了四个仅指向一个对象的引用。因此,标准解决方案对我来说失败了。
有人可以帮忙想出这个案例的解决方案吗?
编辑:我决定自己从不同的结果集中进行分页。另一种同样糟糕的方法可能是延迟加载 B 对象,但这需要对所有 A 对象进行单独查询以获取相应的 B 对象
【问题讨论】: