Как сделать так, чтобы 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
}
// ...
}