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数据,需要进行序列化。