MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como adicionar um campo final a uma coleção de documentos spring-data-mongodb existente?


Descobri que não é possível adicionar um novo private final campo para uma coleção existente usando apenas o @PersistenceContstructor anotação. Em vez disso, precisei adicionar um org.springframework.core.convert.converter.Converter implementação para lidar com a lógica para mim.

Veja como ficou meu conversor:
@ReadingConverter
public class SnapshotReadingConverter implements Converter<DBObject, Snapshot> {

    @Override
    public Snapshot convert(DBObject source) {
        long id = (Long) source.get("_id");
        String description = (String) source.get("description");
        boolean active = (Boolean) source.get("active");
        boolean billable = false;
        if (source.get("billable") != null) {
            billable = (Boolean) source.get("billable");
        }
        return new Snapshot(id, description, active, billable);
    }
}

Espero que isso possa ajudar alguém no futuro.