我正在阅读Hibernate Documentation(版本5.1),我正在贬低这句话:
不应在分页查询中使用提取联接(例如setFirstResult() 或者setMaxResults()),也不应该与scroll()或一起使用 iterate()功能。
我最近在一个拥有大型数据库(2To)的项目上工作,对于许多批处理我们没有任何其他解决方案,而不是FETCH JOIN
方法使用scroll()
(或者我们必须离开Hibernate并返回完整的SQL查询。)
我了解分页查询无法保证我们有完整的结果(例如在获取集合时)。
但是当使用scroll()(依赖于数据库游标,如果我没有犯错)时,如果我们根据Ids对结果进行排序,我就看不出Hibernate无法保证的原因了结果的连贯性和完整性。
这种限制的原因是什么?
获取数据的风险是什么?
有没有办法防止它? (比如按ids根实体排序?)