Spring Hibernate Jackson Hibernate5Module [英] Spring Hibernate Jackson Hibernate5Module
问题描述
我已经使用Hibernate 5.1.0和Jackson 2.7.5设置了弹簧4.3.1
I have set up spring 4.3.1 with Hibernate 5.1.0 and Jackson 2.7.5
我有一些懒惰的init异常因为Jackson ObjectMap尝试转换我的我退出交易服务时迟到的对象。
I had some lazy init Exceptions because the Jackson ObjectMapper tries to convert my Objects to late when I am out of the Transactional Service.
因此我读过杰克逊的Hibernate5Module。
Therefore I have read the Hibernate5Module for Jackson.
添加模块后我没有得到延迟异常但是所有@JsonView注释都被忽略而且我的懒惰集合是'null'
After adding the Module I do not get lazy Exceptions BUT all @JsonView Annotations are ignored and my lazy collections are 'null'
public class SpringWebConfig extends WebMvcConfigurerAdapter {
...
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof org.springframework.http.converter.json.MappingJackson2HttpMessageConverter) {
ObjectMapper mapper = ((MappingJackson2HttpMessageConverter) converter).getObjectMapper();
mapper.registerModule(new Hibernate5Module());
}
}
}
}
我有什么问题吗?
Hibernate5Module应初始化延迟集合...
Is there anything I am doing wrong? The Hibernate5Module should initialize the lazy collections ...
推荐答案
使用以下内容
@EnableWebMvc
@Configuration
@ComponentScan({ "..." })
public class SpringWebConfig extends WebMvcConfigurerAdapter {
@Autowired
SessionFactory sf;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Hibernate5Module module = new Hibernate5Module(sf);
module.disable(Feature.USE_TRANSIENT_ANNOTATION);
module.enable(Feature.FORCE_LAZY_LOADING);
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.modulesToInstall(module);
converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
}
}
这篇关于Spring Hibernate Jackson Hibernate5Module的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!