我有一個使用Hibernate的Spring MVC(3.1)web應用程序,它們都能正常工作 - 今天,我試圖將配置完全移至基於註釋的配置(僅使用xml作爲安全性的東西,尚未在代碼配置中由Spring支持)。基於Spring註釋的配置更改
經過一些調整後,我得到的應用程序開始沒有錯誤,主頁加載正確 - 但我看到一些與Hibernate會話不同的行爲 - 即加載實際接觸Hibernate的頁面時出現以下錯誤實體:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.tmm.web.domain.Profile.connections, no session or session was closed
這是發生在以下情形:
- 請求達到我的
@Controller
,它加載用戶Profile
對象 - 在同樣的方法調用(所以我們不在這裏說分離的實體等)它試圖調用
profile.getConnections()
Profile.connections實際上並沒有明確指出fetchtype,所以應該默認爲渴望加載(是我的理解?),但無論哪種方式,
getConnections()
調用都是在加載profile
之後直接調用的 - 即使它是在懶惰地加載,也可能會想到,它可以輕鬆回到數據庫並按需加載連接。// @控制器代碼 Account viewedUser = accountService.loadAccountByUserName(userName); (「viewingUserConnections」,viewedUser.getUserProfile()。getConnections());
// Profile實體 @OneToMany(mappedBy =「user」,cascade = CascadeType.ALL) private List connections = new ArrayList();
現在,我知道關於延遲加載等,所以它不是一個關於這個問題 - 就像我提到的所有Hibernate的東西是正常工作 - 所以我真正的問題是,什麼Spring的配置可能會影響這種行爲?
我可以發佈我之前和之後的XML與註釋配置,但我希望有人可以指向我的一些配置的方向,我可能錯過了切換。
當然,是的,你是對的 - 我是愚蠢的..第二點,我實際上剛剛測試過,但仍然得到了錯誤的方式。謝謝。 – rhinds