MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment ajouter un champ final à une collection de documents spring-data-mongodb existante ?

J'ai trouvé qu'il n'est pas possible d'ajouter un nouveau private final champ à une collection existante en utilisant uniquement le @PersistenceContstructor annotation. Au lieu de cela, j'avais besoin d'ajouter un org.springframework.core.convert.converter.Converter implémentation pour gérer la logique pour moi.

Voici à quoi mon convertisseur a fini par ressembler :

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

J'espère que cela pourra aider quelqu'un d'autre à l'avenir.