我有一個web應用程序,我一直在使用Spring Data從iBATIS 2慢慢遷移到JPA。爲什麼iBATIS即使禁用了緩存,也會給出陳舊的結果?
大多數情況下,事情進展順利,我一次只爲一個域對象遷移DAO。然而,最近引起我注意的一個問題是,網站的某些部分顯示陳舊的結果列表。
例如,我有一個「票證」部分,其中顯示了打開票證的列表,並允許您在單獨的頁面上查看特定票證。當我創建新票時,我可以正確查看該票在其特定頁面上。然而,直到稍後的一段時間,公開票單才似乎沒有顯示這張新票。
事情我已經試着排除:
- 我看到這個問題甚至在系統禁用
- 我看到,甚至當我在iBATIS的配置設置
cacheModelsEnabled="false"
這個問題MySQL的查詢緩存。 - 即使我從我的sqlMap文件中完全刪除
<cacheModel>
元素和cacheModel="x"
屬性,我仍然看到此問題。 - 只要我重新啓動應用程序,我就會看到最新的結果。
- 當我執行查詢時,iBATIS應該在MySQL客戶端運行,I do查看iBATIS結果中缺少的新票。
- 當我使用Spring MVC和Spring Data JPA嘲笑一個簡單的票單時,我do看到新票。
我也試圖排除某種奇怪的交易狀態與iBATIS,但似乎並沒有任何交易在這裏被使用。
我錯過了什麼?還有什麼我應該試圖弄清楚這一點?或者,我應該優先使用Spring Data JPA來完全替換iBATIS層,而這似乎不受此問題的困擾?
UPDATE
現在我已經經歷了很多我最近改變了與git bisect
,我已經將範圍縮小到介紹Spring的org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
的變化。
所以,看起來有些交易比它應該活的更長。我會添加更多日誌記錄以查看是否可以確認,然後查找避免使用該過濾器的方法。
你好Pioto,看看這有助於https://groups.google.com/forum/#!searchin/mybatis-user/stale$20results|sort:relevance/mybatis-user/vhYQ6_QaMsI/ETGW-8cZStsJ – 2015-04-10 06:49:00
該鏈接似乎被打破,至少對我而言。您是否願意在回答中至少解釋您在那裏找到的內容? – pioto 2015-04-10 14:37:54