2013-11-01 73 views
0

我有一個分頁HQL查詢從一個表,狀態NEW獲取記錄或失敗:Hibernate的分頁與更新記錄

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'。所以下一次,分頁就是折騰,因爲查詢不會再產生相同的結果集。

任何想法如何解決這個問題?

回答

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從客戶端中的「新/失敗」更改爲「成功」。無論如何,這只是一個建議......我真正的感覺是,如果數據集發生了變化,那麼也許你的分頁不是真的關閉,你只是在想它是錯誤的。