Я недавно перенес версию проекта Spring Boot, обновившись с версии 1.X до 2.X. Однако это вызвало проблемы при восстановлении сохраняемых объектов с использованием org.bson.Document
(с использованием PojoCodecProvider
), поскольку у них не было поля _class
.
Я сохраняю свою информацию следующим образом (Мне нужно сохранить все мои экземпляры, чтобы получить их позже):
Map<String, Object> outbound = new HashMap<>();
// Add multiple objects/instances of different types
log.setOutbound(new Document(outbound));
Где моя сущность / документ Log
по сути такова:
public class Log {
private ObjectId id;
private Document outbound;
// Getters ans Setters
}
Проблема возникает, когда я попробуйте восстановить сохраненные объекты, преобразовав их в указанные c типы:
Log log = this.logRepository.findById("ID_HERE");
Document outbound = lastTracking.getOutbound();
MyType = outbound.get("myTypeKey", MyType.class); //A cast exception occours here!
Анализируя разницу между данными, сохраненными в Spring Boot версии 1 и 2, я обнаружил, что самая последняя версия прекратила запись поле _class
, в котором отображаются экземпляры, хранящиеся в моем Document
(Log#outbound
).
Кто-нибудь сталкивался с этой проблемой? Заранее большое спасибо!