配置Jackson以使用jackson-datatype-hibernate启用自引用对象

时间:2014-10-17 15:35:38

标签: spring-boot spring-data-rest

如何在使用Spring Boot时在Spring Data中配置Jackson ObjectMap?

当我尝试返回自引用实体时,当我尝试在自引用表中检索对象的子项时,我不断收到"com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS"错误。

我认为这个问题是一个序列化问题,可以通过使用jackson-datatype-hibernate包来帮助我序列化自引用对象来解决。 https://github.com/FasterXML/jackson-datatype-hibernate

到目前为止,我还未能看到有关如何配置Spring Data Rest使用的现有ObjectMapper实例的任何明确指导。

根据项目的GitHub页面,我需要做的就是将ObjectMapper子类化

public class HibernateAwareObjectMapper extends ObjectMapper {

    public HibernateAwareObjectMapper() {
        registerModule(new Hibernate4Module());
    }
}

但是,如果我将ObjectMapper子类化,那么我是不是会松开Jackson ObjectMapper的默认行为?我不一定想失去那种行为,只是扩展它。另外,我不需要在课堂上加上@Component注释才能让Spring接听它吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是Spring Data REST,我认为您需要Spring Boot 1.2来自动更新对象映射器(有关详细信息,请参阅here)。对于旧版本,您可以自己注入(但是您需要配置所需的所有功能,如果它不仅仅是那个模块)。