Как сделать так, чтобы MongoDB автоматически вызывал generateIdIfAbsentFromDocument?

У меня есть CollectibleCodec<Thing> который я использую для взаимодействия с базой данных MongoDB:

public class ThingCodec implements CollectibleCodec<Thing> { /* ... */ }

// ...

MongoCollection<Thing> things = database
    .withCodecRegistry(CodecRegistries.fromCodecs(new ThingCodec()))
    .getCollection("things", Thing.class);

Чтение и письмо Thing через этот кодек работает просто отлично, но есть загвоздка: ThingCodec.generateIdIfAbsentFromDocument(Thing) метод никогда не вызывается, поэтому вещи сохраняются в базе данных без идентификаторов, если я не установил идентификатор перед сохранением вещи. Есть ли способ настроить драйвер MongoDB для автоматического вызова этого метода при вставке или обновлении элементов в коллекции?

1 ответ

Конечно, один простой способ сделать это в ThingCodec сам:

public class ThingCodec implements CollectibleCodec<Thing> {

    @Override
    public void encode(BsonWriter writer, Thing value, EncoderContext context) {
        generateIdIfAbsentFromDocument(value);
        // Do encoding
    }

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