我的系統是使用hibernate3,struts2,spring搭建。
在我的系統中,此異常出現我感覺比較奇怪,我已經配置spring OpenSessionInViewFilter,如下
<filter>
<filter-name>lazyLoadingFilter</filter-name>
<filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>lazyLoadingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
但是在系統中仍然可能報no session 錯誤,我將操作對象對應的數據庫中記錄的ID進行修改后,不再報此錯誤,修改回來后再次報錯(其他任何字段都沒有修改過,一次可以知道唯一導致no session錯誤的問題就是對象的ID,而和其他參數都沒有任何關系,和spring opensessioninviewfilter也沒有關系,與fetch,lazy也沒有關系).
在出現此問題之前,數據庫有從外來源導入過數據,通過 del plsql工具導入的。我懷疑是否與導入數據的原因有關。于是我測試通過系統功能新建了測試對象,對新建對象的操作也沒有報no session錯誤。
解決:
我將有問題的A對象的數據庫中的ID 手動修改成可以正確執行的,原有數據操作不會報錯了。新建數據暫時沒有發現有此問題。但是導致此問題的原因不明,如果有人有遇到和我一樣的情況,請幫我解惑,十分感激。