我有一个分页 HQL 查询,它从状态为 NEW 或 FAILED 的表中获取记录:
public List<Integer> getPendingItems(int channelId, int start, int pageSize) {
Query query = sessionFactory.getCurrentSession().createQuery(
"select cit.id
from Item cit
where cit.channel.id = :channelId and (cit.statusCode = 'NEW' or cit.statusCode = 'FAILED')");
query.setParameter("channelId", channelId);
query.setMaxResults(pageSize);
query.setFirstResult(start);
return query.list();
}
此查询返回的初始记录由服务处理,但问题是记录的 statusCode 更新为“SUCCESS”或“FAILED”。所以下一次,分页会被折腾,因为查询将不再产生相同的结果集。
知道如何解决这个问题吗?