我正在使用jpa和mysql運行playframework 1.2.4。Playframework jpa分頁跳過每隔一頁
我有一個工作,從數據庫檢索前20個活動,將狀態設置爲活動以停止執行它們的其他工作實例,執行活動,然後獲取下一頁活動並重復,直到所有活動完成。但是,它似乎在跳過每一秒鐘的頁面,或者20頁的頁面大小爲20的記錄。我的邏輯如下。
long total = Activity.count(q, params);
int page = 1;
int pageSize = 20;
int pages = ...
while (page <= pages) {
JPAPlugin.startTx(false);
Collection<Activity> activities = Activity.find(query, params).fetch(page, pageSize);
for (Activity activity : activities) {
activity.status = ActivityStatus.ACTIVE;
activity.save();
}
JPAPlugin.closeTx(false);
JPAPlugin.startTx(false);
for (Activity activity : activities)
longProcessActivityInAnotherTransaction(activity);
JPAPlugin.closeTx(false);
page++;
}
但是在數據庫中,我看到的記錄與1-20 ACTIVE狀態,21-40無有效狀態,61-80有品位的活動等。
它似乎與交易有關。如果我在while循環中註釋掉所有的交易開始/結束代碼,並打印出所選活動的id,我可以看到所有活動都被正確選中。
如果我在調試模式下運行並暫停執行中間循環,並直接對mysql數據庫運行生成的查詢,我會看到與代碼中相同的行爲。當循環沒有執行時,sql查詢按預期執行。
我的連接字符串是:
的mysql://根:通過@本地/ DBNAME
有什麼建議?