Hibernate - 我们为什么不使用FETCH JOIN和scroll()?

时间:2017-04-04 17:53:30

标签: java hibernate

我正在阅读Hibernate Documentation(版本5.1),我正在贬低这句话:

  

不应在分页查询中使用提取联接(例如setFirstResult()   或者setMaxResults()),也不应该与scroll()或一起使用   iterate()功能。

http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#hql-explicit-join

我最近在一个拥有大型数据库(2To)的项目上工作,对于许多批处理我们没有任何其他解决方案,而不是FETCH JOIN方法使用scroll()(或者我们必须离开Hibernate并返回完整的SQL查询。)

我了解分页查询无法保证我们有完整的结果(例如在获取集合时)。

但是当使用scroll()(依赖于数据库游标,如果我没有犯错)时,如果我们根据Ids对结果进行排序,我就看不出Hibernate无法保证的原因了结果的连贯性和完整性。

这种限制的原因是什么?

获取数据的风险是什么?

有没有办法防止它? (比如按ids根实体排序?)

0 个答案:

没有答案