Migration Spring Boot 1.X to 2.X удалить поле _class из документа BSON - PullRequest
4 голосов
/ 02 мая 2020

Я недавно перенес версию проекта 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).

Кто-нибудь сталкивался с этой проблемой? Заранее большое спасибо!

...