У меня возникли трудности с настройкой сопоставления объектов для MongoDB в Micronaut с помощью Kotlin.Я получаю сообщения об ошибках типа:
Ошибка декодирования в «Актив» со следующим исключением:
Не удается найти открытый конструктор для «Актива».
Пользовательский кодек или PojoCodec может потребоваться явно настроить и зарегистрировать для обработки этого типа.org.bson.codecs.configuration.CodecConfigurationException: исключение произошло при декодировании с использованием AutomaticPojoCodec.Сбой декодирования в «Актив» со следующим исключением:
Не удается найти общедоступный конструктор для «Актива».
Может потребоваться явная настройка и регистрация пользовательского кодека или PojoCodec для регистрации этогоТип.
С KMongo это легко.Однако MongoClient, введенный Micronaut, не имеет реестра кодеков KMongo.
Я могу заставить его работать следующим образом:
val db: MongoDatabase by lazy {
val codecRegistry = ClassMappingType.codecRegistry(MongoClientSettings.getDefaultCodecRegistry())
client.getDatabase("db-name").withCodecRegistry(codecRegistry)
}
Этот код взят непосредственно из KMongo.(Кстати, использование database.withKMongo()
привело к той же ошибке)
Хотя это работает, я хотел бы, чтобы Micronaut использовал KMongo для создания клиента или разрешил использовать свой кодек, как описано выше, используя конфигурацию(application.yml).
Здесь упоминается настройка codec-registry
: https://micronaut -projects.github.io / micronaut-mongodb / latest / guide / configurationreference.html ,но я понятия не имею, что ввести в эту настройку, чтобы она заработала.
Любая помощь приветствуется!