我终于找到了解决方案!感谢indybee给我一个线索。
教程Spring 3.1, Hibernate 4 and Jackson-Module-Hibernate有一个很好的解决方案为Spring 3.1和更早版本。但是由于3.1.2版Spring有自己的MappingJackson2HttpMessageConverter,其功能与教程中几乎相同,所以我们不需要创建这个自定义的HTTPMessageConverter。
使用javaconfig我们不需要创建HibernateAwareObjectMapper,我们只需要将Hibernate4Module添加到Spring已经拥有的默认MappingJackson2HttpMessageConverter,并将其添加到应用程序的HttpMessageConverters,因此我们需要:
>从WebMvcConfigurerAdapter扩展我们的spring配置类,并覆盖方法configureMessageConverters。
>在该方法添加MappingJackson2HttpMessageConverter与在previus方法中注册的Hibernate4Module。
我们的config类应该看起来像这样:
@Configuration
@EnableWebMvc
public class MyConfigClass extends WebMvcConfigurerAdapter{
//More configuration....
/* Here we register the Hibernate4Module into an ObjectMapper, then set this custom-configured ObjectMapper
* to the MessageConverter and return it to be added to the HttpMessageConverters of our application*/
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> converters) {
//Here we add our custom-configured HttpMessageConverter
converters.add(jacksonMessageConverter());
super.configureMessageConverters(converters);
}
//More configuration....
}
如果你有一个xml配置,你不需要创建自己的MappingJackson2HttpMessageConverter,但你需要创建在教程(HibernateAwareObjectMapper)中出现的个性化映射器,所以你的xml配置应该看起来像这样:
希望这个答案是可以理解的,并帮助有人找到这个问题的解决方案,任何问题,随时问!