问题描述
我正在将休眠版本从 5.0.12.Final
迁移到 5.4.28.Final
,并且我执行了一些明显的直接弃用更改,例如将 org.hibernate.Query
更改为 org.hibernate.query.Query
,但遇到了以下重大更改.
示例代码片段
Query query = this.getSessionFactory().getCurrentSession().getNamedQuery("fetchPhotos");
query.setFirstResult(firstResult);
query.setMaxResults(limit);
return query.list();
在版本迁移之前,即使我们将 setMaxResults
值设置为 zero
,这被认为是 no limits
,但最新的休眠更改返回 Collections#emptyList
只要它满足条件 maxResults==0
就立即执行。后续分析发现change是因为hibernate ticket,还发现了库级别test case断言的行为。虽然 Query.setMaxResults(0)
似乎不合逻辑,但最新的变化迫使我们有一个类似于下面的条件
if(limit > 0){
query.setMaxResults(limit);
}
真正的问题是我们在整个代码库中的无数地方都使用了 query.setMaxResults(limit)
片段,并且更改所有出现的代码似乎很耗时。 是否存在任何解决方法来保持向后兼容性行为,例如 setMaxResults(0)
== no limits
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)