Общие данные Spring 2.1.2 MongoDB не может десериализовать Необязательное значение - PullRequest
0 голосов
/ 20 ноября 2018

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);
}

или любым другим способом

...