I have following DTOs:
@Value
public class PracticeResults {
@NotNull
Map<Long, Boolean> wordAnswers;
}
@Value
public class ProfileMetaDto {
@NotEmpty
String name;
@Email
String email;
@Size(min = 5)
String password;
}
@Value
is a Lombok annotation which generates a constructor. Which means that this class doesn't have a no-arg constructor.
I used Spring Boot 1.4.3.RELEASE and ObjectMapper
bean was able to deserialize such object from JSON.
After the upgrade to Spring Boot 2.0.0.M7 I receive following exception:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of PracticeResults (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
Jackson version used in Spring Boot 1.4.3 is 2.8.10
and for Spring Boot 2.0.0.M7 is 2.9.2
.
I've tried to Google this problem but found only solutions with @JsonCreator
or @JsonProperty
.
So, why does it work with Spring Boot 1.4.3 and fails with Spring Boot 2? Is it possible to configure bean to behave the same way as the older version?