現狀:爲什麼我是EntityManager的獲取過時的數據庫對象
- 應用一個
- 應用B(Java獨立,計劃的批處理作業加載數據(在一個Tomcat 7,REST接口的Web應用程序運行的戰爭)從文件到數據庫)
- 在共享控制表與每個文件的記錄之間。
- 應用程序A正確地在控制表中保留新記錄並設置適當的狀態(掛起),從而發信號通知應用程序B開始處理。
- Web應用程序正確顯示狀態爲掛起狀態。
- 應用程序B處理該批次,加載數據並正確設置新狀態(已處理),表示加載已完成。這很容易通過使用fx Squirrel進行簡單的查詢來驗證。
- 在Web應用程序中刷新頁面時,狀態會錯誤地顯示爲掛起而不是正確的狀態:已處理。調試響應時,狀態變量被分配爲待處理狀態。我的日誌表明查詢發生在刷新上。
- 如果我重新啓動Tomcat,下一個查詢將顯示正確的結果,即正在處理的狀態。這也令我困惑,除了EntityManager維護數據庫對象之外呢?
問題: 我只是不知道爲什麼應用程序A繼續看到狀態爲掛起。我已經嘗試了很多事情來確保entityManager已經清除了緩存(對於App A和App B),但App A查詢仍然會得到錯誤的狀態。
是否在每次更新/插入App A/App B時刷新EntityManager並刷新實體? –
提交事務應刷新。因爲我所有的插入/更新都在事務中運行,並且真正的:-)狀態可以通過fx Squirrel輕鬆驗證。 – MMA