避免未取得的惰性物件的Jackson 序列化
Jackson 是一個流行的資料綁定Java 庫,在使用以下命令序列化物件時可能會遇到問題延遲取得的屬性。在這種情況下,未載入到會話中的未取得的屬性會在序列化期間導致「無法初始化代理 - 無會話」異常。
解:
為了解決這個問題,我們需要通知 Jackson 在序列化期間忽略延遲取得的屬性。在舊版的 Spring(3.1 及更低版本)中,這是透過建立自訂 HibernateAwareObjectMapper 並將其新增至自訂 MappingJackson2HttpMessageConverter 來實現的。
但是,在 Spring 3.1.2 及更高版本中,Spring 提供了自己的 MappingJackson2HttpMessageConverter包括必要的功能。我們可以配置此轉換器並將其新增至應用程式的 HttpMessageConverters。
實作:
Java 設定:
XML配置:
XML配置:
XML配置:透過配置MappingJackson2HttpMessageConverter 以使用 Hibernate4Module,Jackson 將被指示在序列化期間忽略延遲取得的屬性。這解決了未初始化代理的問題,並允許您的控制器返回 User 物件而不會遇到序列化錯誤。以上是如何避免延遲載入 Hibernate 物件的 Jackson 序列化錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!