大家好, 我花了很多时间在Google上搜索,并从JSON 1升级到JSON 2,但当我尝试返回一个实体列表时,出现异常:
"接收到的异常无法写入JSON:无法初始化代理 - 没有会话(通过引用链)"
我知道这与Hibernate懒加载有关,但我还没有找到解决方法。我认为jackson-module-hibernate项目可以解决此问题。然而,我一直无法让它正常工作。
以下是我的技术环境:
- Spring: 3.2.1RELEASE
- Hibernate 4.1.7.Final
- Jackson 2
- jackson-core 2.0.4
- jackson-databind: 2.0.4
- jackson-datatype-hibernate4: 2.1.2
我正在使用Java Config配置:
@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会起作用。然而,我一定没有正确地连接事物,因为我仍然会收到异常。
有人能看出这里有什么错误吗?
感激不尽...