public Fwxx select(Class c, int fwid){ Session session=HibernateSessionFactory.getSession(); Fwxx fwxx=(Fwxx)session.get(c,fwid); System.out.println(fwxx.getLxr()); HibernateSessionFactory.closeSession(); return fwxx; } 查詢完之后就關閉session,但是當在action調用這個方法的時候就報 could not initialize proxy - the owning Session was closed
2 回答

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
按照你的講法,感覺并不是在調用方法時拋異常,而是在調用方法后使用返回對象Fwss的屬性時拋的異常。
這是因為你Fwxx對象肯定還包含其他對象,而且還用了hibernate的遲加載,當具體使用到這個對象時hibernate才會去數據庫里查,而這時你的session已經關閉了,所以會拋異常。
比較傳統的解決辦法是加一個Filter,把開閉session的操作放在filter里面來保證在request的生命周期內有一個活動的session對象。
當然還有其他實現方法,如aop,或在action里控制session等等,前一種比較普遍,后一種要寫許多代碼,而且還破壞了分層結構,所以不太推薦,不過在小規模的系統中還是比較有用的。
- 2 回答
- 0 關注
- 145 瀏覽
添加回答
舉報
0/150
提交
取消