Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Micronaut和Kotlin+为MongoDB配置对象映射;克蒙戈?_Mongodb_Kotlin_Micronaut_Kmongo - Fatal编程技术网

如何使用Micronaut和Kotlin+为MongoDB配置对象映射;克蒙戈?

如何使用Micronaut和Kotlin+为MongoDB配置对象映射;克蒙戈?,mongodb,kotlin,micronaut,kmongo,Mongodb,Kotlin,Micronaut,Kmongo,我在Micronaut和Kotlin中为MongoDB配置对象映射时遇到一些困难。我遇到了如下错误: 解码为“资产”失败,出现以下异常: 找不到“资产”的公共构造函数 可能需要显式配置和注册自定义编解码器或PojoCodec以处理此类型。 org.bson.codecs.configuration.CodecConfigurationException:使用AutomaticPojoDec进行解码时发生异常。 解码为“资产”失败,出现以下异常: 找不到“资产”的公共构造函数 可能需要显式配置和注

我在Micronaut和Kotlin中为MongoDB配置对象映射时遇到一些困难。我遇到了如下错误:

解码为“资产”失败,出现以下异常:

找不到“资产”的公共构造函数

可能需要显式配置和注册自定义编解码器或PojoCodec以处理此类型。 org.bson.codecs.configuration.CodecConfigurationException:使用AutomaticPojoDec进行解码时发生异常。 解码为“资产”失败,出现以下异常:

找不到“资产”的公共构造函数

可能需要显式配置和注册自定义编解码器或PojoCodec以处理此类型

有了KMongo,这很容易。然而,Micronaut注入的MongoClient没有KMongo的编解码器注册表

我可以让它按如下方式工作:

    val db: MongoDatabase by lazy {
        val codecRegistry = ClassMappingType.codecRegistry(MongoClientSettings.getDefaultCodecRegistry())
        client.getDatabase("db-name").withCodecRegistry(codecRegistry)
    }
此代码直接取自KMongo。(顺便说一句,使用
数据库。withKMongo()
会导致相同的错误)

虽然这是可行的,但我想让Micronaut使用KMongo创建客户机,或者让它使用上面的编解码器,使用配置(application.yml)

这里提到了一个
编解码器注册表
设置:,但我不知道在该设置中输入什么才能使其正常工作


感谢您的帮助

您可以简单地将编解码器注册表定义为bean。由于您无法控制正在注册的类,因此可以创建工厂

@Factory
class KMongoFactory {

    @Singleton
    fun kCodecRegistry(): CodecRegistry {
        return ClassMappingType.codecRegistry(MongoClientSettings.getDefaultCodecRegistry());
    }

}
像上面这样的东西应该可以做到这一点


编辑:请注意,
MongoClients.getDefaultCodecRegistry()
是默认添加的

您是否有机会在github上共享完整的示例(micronaut-kotlin-kmongo),这将非常有用!嗯,我没有关于它的框架项目,但我可以在Github上创建一个要点。。这会有帮助吗?Thant正是我所需要的。如何在Java中实现这一点?您能否共享gist url@JeroenKnoefIs?您是否有机会在github上共享micronaut-kotlin-kmongo的完整集成?那会有用的!