大家好,我花了相当多的时间谷歌搜索并从 JSON 1 升级到 JSON 2,但是当我尝试返回实体列表时,我得到了异常:
“收到的异常无法写入 JSON:无法初始化代理 - 没有会话(通过引用链:”
我知道这与 Hibernate 惰性初始化有关,但我还没有弄清楚如何解决它。我认为 jackson-module-hibernate 项目是解决方案。但是我无法让它工作。
这是我的技术:
- 春季:3.2.1发布
- 休眠 4.1.7.Final
- 杰克逊 2
- 杰克逊核心 2.0.4
- 杰克逊数据绑定:2.0.4
- 杰克逊数据类型休眠4: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 会起作用。但是,我一定不能正确连接,因为我仍然会遇到异常。
任何人都可以在这里看到任何错误吗?
谢天谢地...