好日子所有, 我花了相當長的時間Googlin'升級從JSON 1至JSON 2,但是當我試圖返回實體的名單,我得到異常:無法初始化代理 - 沒有會話
「收到異常無法寫入JSON:無法初始化代理 - 沒有會話(通過參考鏈:」
我知道這與Hibernate懶惰初始化有關,但我還沒有想出如何解決它。 -module-hibernate項目是解決方案,但是我一直無法實現它。
這是我的技術:
- 彈簧:3.2.1RELEASE
- 休眠4.1.7.Final
- 傑克遜2
- 傑克遜核2.0.4
- 傑克遜 - 數據綁定:2.0.4
- 傑克遜 - 數據類型-hibernate4:2.1.2
我正在使用Java配置: ...
@Bean
public com.mycompany.config.MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setObjectMapper(new HibernateAwareObjectMapper());
return mappingJackson2HttpMessageConverter;
}
@Bean
public OpenEntityManagerInViewFilter springOpenEntityManagerInViewFilter() {
return new org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter();
}
@Bean
public ContentNegotiatingViewResolver contentNegotiatingViewResolver() {
final ContentNegotiatingViewResolver contentNegotiatingViewResolver = new ContentNegotiatingViewResolver();
contentNegotiatingViewResolver.setDefaultContentType(MediaType.APPLICATION_JSON);
final ArrayList defaultViews = new ArrayList();
defaultViews.add(converter());
contentNegotiatingViewResolver.setDefaultViews(defaultViews);
return contentNegotiatingViewResolver;
}
我也有:
public class HibernateAwareObjectMapper extends ObjectMapper {
public HibernateAwareObjectMapper() {
Hibernate4Module hm = new Hibernate4Module();
registerModule(hm);
}
}
流從控制器,它調用幾個服務,每個返回的實體或列表開始。然後我把返回的對象放到一個對象中並返回它,認爲@ResponseBody會起作用。但是,由於我仍然得到例外,所以我不能將事情連線好。
任何人都可以在這裏看到任何錯誤?
感激......
太棒了。從休眠4,jpa 2.0與數據類型2.6.0工作。但是,不應該使用emf.unwrap,而應該使用EntityManager.unwrap(HibernateEntityManager.class).getSession()。getSessionFactory(),因爲emf.unwrap僅在jpa 2.1之後纔可用(儘管沒有檢查它)。 – 2015-07-29 15:40:23