一個進程不斷查詢數據庫,看某個字段時候已經被修改,如果修改則做下一步工作;如果沒有修改繼續循環查詢
另外一個進程由用戶操作去更新數據庫中的這個字段
問題是,在上面這樣的場景中,查詢數據庫的進程根本看不到數據被修改
解決辦法:
給第一個查詢部分也加上事務管理的代碼(一般情況下,對於修改,更新部分的代碼才進行事務的管理,而這種查詢代碼都是直接查詢的)
TasksDAO dao = new TasksDAO(); Transaction tran = dao.getSession().beginTransaction(); Tasks task = dao.findById(id); tran.commit(); dao.getSession().close();