SpringBoot,Controller和Jackson的ObjectMapper
错误描述
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.book.springtest.dao.OrderPO$HibernateProxy$RMSLTKwN["hibernateLazyInitializer"])
解决方法
spring.jackson.serialization.fail-on-empty-beans=false
或者
自动装载Bean
@Configuration
public class SerializerJacksonBean {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper().
disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
}
}
当然,也可以顺带设置下Jackson的时间转换格式:
@Configuration
public class SerializerJacksonBean {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
//取消时间的转化格式
objectMapper.configure(SerializationFeature.
WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
return objectMapper;
}
}
JPA集成Hibernate
SpringBoot controller默认使用的是Jackson数据,需要进行序列化。
