【发布时间】:2015-03-06 22:25:30
【问题描述】:
我有一个项目通过 org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter 视图过滤器大量使用延迟加载。
如果我禁用它,我必须在我的 rest servlet 配置中添加一个新的消息转换器:
public MappingJackson2HttpMessageConverter jacksonMessageConverter() {
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
// Registering Hibernate4Module to support lazy objects
mapper.registerModule(new Hibernate4Module());
messageConverter.setObjectMapper(mapper);
return messageConverter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// Add the custom-configured HttpMessageConverter
converters.add(jacksonMessageConverter());
super.configureMessageConverters(converters);
}
但是,这样做似乎破坏了@JsonView 的行为:@JsonView 注解的存在似乎不再过滤/过滤任何属性。
我的猜测是 Hibernate4Module 不支持 @JsonView,但如果是这种情况,我如何使用 Spring 4.1 的 @JsonView 支持并让 Jackson 认识到延迟加载的 Hibernate 实体?到目前为止,唯一的解决方案似乎是避免使用 Hibernate4Module 并依赖 OpenEntityManagerInViewFilter 过滤器。
感谢您提供的任何见解。
【问题讨论】:
标签: spring hibernate spring-mvc jackson