我已經繼承了一個應用程序,它執行一些基於觸發器的插入和更新,偶爾會拋出StaleObjectException。我試圖添加很多調試(tx,hibernate,type等),這讓我更加困惑。StaleObjectException,但真的很奇怪
15:21:00 Calling dao.insert
15:21:00 starting Trancation T1
15:21:01 insert records including object #290595
15:21:01 Transaction T1 commits
我看到日誌中的tx提交,hibernate插入和數據,實際上id爲#290595的對象被綁定爲值。在15:24:00有一個類似的插入,但直到15:25:00該應用程序完全沉默(沒有用戶,沒有其他活動)。
15:25:00 Start a Required_new transaction T2
15:25:00 Calling dao.finder
15:25:01 dao transaction uses propagated T2
15:25:01 Select returns object with id #290595
15:25:01 ends propagated transacted finder
15:25:02 calling dao.update
15:25:02 dao transaction uses propagated T2
15:25:02 binds object with id #290595
15:25:02 Could Not Synchronize Database State With Session (StaleObjectStateException)
數據庫中的sql查詢顯示記錄#290595確實不存在。插入和失敗之間有4分鐘。不用說,這通常是一天中大部分時間工作,但突然......
不會自動刷新和提交事務提交?
我假設插入已將數據移到緩存但不是數據庫,在緩存中再次找到,但拒絕更新,因爲它們不在數據庫中。所以問題是,如果任何人有任何偉大的想法?
它是一個oracle數據庫,我試圖確保T2具有Required_new事務,並與isolation_level序列化,但效果不大。我開始認爲插入是不知不覺中,?!
任何建議welcom