類型異常報告Spring MVC的:無法初始化代理 - 沒有會話(通過參考鏈)
消息無法寫入內容:無法初始化懶洋洋角色的集合:edu.waa.classified.dto。 User.products,無法初始化代理 - 沒有會話(通過引用鏈:java.util.ArrayList [0] - > edu.waa.classified.dto.User [「products」]);嵌套異常是com.fasterxml.jackson.databind.JsonMappingException:未能延遲初始化角色集合:edu.waa.classified.dto.User.products,無法初始化代理 - 無Session(通過引用鏈:java.util。 ArrayList [0] - > edu.waa.classified.dto.User [「products」])
說明服務器遇到內部錯誤,導致它無法完成此請求。
回答
我剛剛在@ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL)註釋之後添加了@JsonIgnore。有效。 但不知道爲什麼它的工作。
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "WISHLIST", joinColumns = {
@JoinColumn(name = "userId", referencedColumnName = "id") }, inverseJoinColumns = {
@JoinColumn(name = "productId", referencedColumnName = "id") })
@JsonIgnore
private List<Product> products;
以前,您的應用程序試圖在會話關閉後獲取產品列表以形成json對象。現在你告訴Json解析器忽略產品列表不要在構建json響應時填充它。所以NP。 – Lovababu
我想你的控制器是休眠會話。 (沒有@Transactional)。但是你的json列表想要在該會話之外填寫。但是hibernate充滿了代理而不是實際的數據,而在外部休眠會話中,當你嘗試訪問時它不能加載這些數據。 JsonIgnore不會要求這些數據,所以它可以工作。或者,如果你想在你的JSON對象中的數據,請獲取EAGER類型。然後休眠立即加載它們。如果你只想在特殊情況下使用這個列表,請將其放在LAZY中,然後在服務層上使用特殊方法訪問它,該方法的註釋爲@transactional。然後休眠可以填充該列表。
問題是你的FetchType.lazy。當Jackson轉換用戶實體時,它會嘗試加載產品,但休眠會話已關閉。
因此,添加@JsonIgnore是解決這個問題的方法之一,但是當您需要返回產品時,這是不行的。
我發現這個答案,解決同樣的問題,對我,給了我懶惰加載類型: https://stackoverflow.com/a/21760361
這個解決方案的好處是,你仍然可以使用產品的延遲加載。
我可能會幫助別人。我也遇到了同樣的問題。我只是將下面的註釋添加到我的實體類(就在實體類之前)。它確實做了這項工作。
@Entity @Table(name="Country") @Proxy(lazy = false) public class Country {}
- 1. nhibernate無法初始化代理 - 沒有會話+ asp.net mvc
- 2. Hibernate/Spring3:無法初始化代理 - 沒有會話
- 3. 的Grails GORM:無法初始化代理 - 沒有會話
- 4. Spring-WS:LazyInitializationException:無法初始化代理 - 無會話
- 5. 未能延遲初始化收集...,無法初始化代理 - 沒有會話
- 6. JPA庫org.hibernate.LazyInitializationException:無法初始化代理 - 沒有會話
- 7. 傳承 - 無法初始化代理 - 沒有會話
- 8. 錯誤:休眠無法初始化代理 - 沒有會話
- 9. 無法初始化代理 - 沒有會話
- 10. LazyInitializationException中在休眠:無法初始化代理 - 沒有會話
- 11. 無法初始化代理 - 沒有會話
- 12. LazyInitializationException無法初始化代理 - 沒有會話
- 13. 無法初始化代理 - 沒有會話再次
- 14. 無法初始化代理 - 沒有會話?
- 15. CommandLineRunner和Springboot問題與Hibernate - 無法初始化代理會話 - 沒有會話
- 16. LazyInitializationException:無法初始化代理 - 在Spring和休眠沒有會話
- 17. spring boot + jpa + jersey無法初始化代理服務器 - 沒有會話
- 18. 無法初始化代理 - 沒有會話,訪問的過濾器類
- 19. LazyInitializationException問題無法初始化代理 - 無會話
- 20. 在調用WebService期間出錯 - 無法初始化代理 - 沒有會話
- 21. 無法初始化代理 - 上的getValue從Java對象沒有會話
- 22. org.hibernate.LazyInitializationException:無法初始化代理 - 無會話
- 23. 無法初始化代理 - 無會話(Grails運行時異常)
- 24. Tomcat HTTP狀態500 - 無法初始化代理 - 無會話
- 25. Spring MVC無法初始化類com.mongodb.MongoClient
- 26. Hibernate-未能懶洋洋地初始化一個角色集合:beans.Language.patients,無法初始化代理 - 沒有會話
- 27. 休眠/春:無法初始化懶洋洋 - 沒有會話或會話關閉
- 28. spring mvc servlet初始化
- 29. 無法初始化鏈表
- 30. Hibernate無法初始化代理 - 在線程中訪問對象時沒有會話
請發佈一些代碼 – MohitC