Spring Common Data 2.1.2 (и Data MongoDB 2.1.2) не могут десериализовать необязательные поля из моего класса.Это работало с предыдущей версией (2.0.8), теперь мой объект сохраняется в БД (с MongoRepository.save), но есть исключение, когда я пытаюсь его прочитать (MongoRepository.findById).Я сузил точное поле, и проблема с хранением Необязательно:
java.lang.UnsupportedOperationException: Cannot set immutable property java.util.Optional.value!
at org.springframework.data.mapping.model.BeanWrapper.setProperty(BeanWrapper.java:86) ~[spring-data-commons-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.data.mapping.model.ConvertingPropertyAccessor.setProperty(ConvertingPropertyAccessor.java:61) ~[spring-data-commons-2.1.2.RELEASE.jar:2.1.2.RELE
и мой класс:
public class Coordinates {private double latitude;частная двойная долгота;частная дополнительная высота;}
есть исключение, когда данные в БД имеют форму:
altitude: Object
value: 0
и нет ошибки, когда высота не имеет значения
altitude: Object
(без значения)
Работало с предыдущей версией Spring Boot (и Spring Data Commons / Mongodb 2.0.8).
Я не могу найти информацию об измененном поведении / различном обращении сНеобязательные и т. Д.
Как решить?
Должен ли я оставить его как
private Double altitude;
с геттером:
public Optional<Double> getAltitude() {
return Optional.ofNullable(altitude);
}
или любым другим способом