com.fasterxml.jackson.databind.exc.InvalidDefinitionException

org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.xxx.support.maintenance.SystemTime]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.xxx.support.maintenance.SystemTime` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

报错大意是:没法构造实体,因为没有默认的构造器,无法从对象值反序列化;

原因:这是因为使用了lombok,导致序列化出现错误;

          在该实体类中添加了@AllArgsConstructor方便实例化该类用的构造函数,导致JVM不会添加默认的无参构造函数,而jackson的反序列化需要无参构造函数,因此报错。

解决:添加@NoArgsConstructor创建一个无参构造函数。

lombok相关的几个注解:

@Data
使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去;
@AllArgsConstructor
使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数;
@NoArgsConstructor
使用后创建一个无参构造函数;

你可能感兴趣的:(JAVA)