Общие данные Spring 2.1.2 MongoDB не может десериализовать Необязательное значение

Общие данные Spring 2.1.2 (и данные MongoDB 2.1.2) не могут десериализовать необязательные поля из моего класса. Он работал с предыдущей версией (2.0.8), теперь мой объект сохраняется в БД (с MongoRepository.save), но есть исключение, когда я пытаюсь его прочитать (MongoRepository.findById). Я сузил точное поле, и проблема заключается в хранении Optional:

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

и мой класс:

координаты публичного класса {частная двойная широта; частная двойная долгота; частный Необязательная высота; }

есть исключение, когда данные в БД находятся в форме:

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

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

0 ответов

Другие вопросы по тегам