Hibernate分页更新记录

时间:2013-11-01 05:08:29

标签: java spring hibernate pagination

我有一个分页的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”。所以下一次,分页会进行折腾,因为查询将不再产生相同的结果集。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

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' or ID = 'successId' or ID = 'otherSuccessId' or ID = 'thirdSuccessId')");
    query.setParameter("channelId", channelId);
    query.setMaxResults(pageSize);
    query.setFirstResult(start);
    return query.list();
}

我的编辑是它所说的部分:

  

或ID ='successId'或ID ='otherSuccessId'或ID ='thirdSuccessId'

我建议您可以跟踪客户端中哪些ID从“新/失败”更改为“成功”。无论如何,这只是一个建议......我的真实感觉是,如果数据集发生了变化,那么也许你的分页并没有真正关闭,你只是想错了。