gpt4 book ai didi

java - 在 scala 中组合 mongodb 编解码器注册表

转载 作者:行者123 更新时间:2023-11-30 05:59:11 25 4
gpt4 key购买 nike

我有两个用于一组案例类的 CodecRegistry 实现。它们大多数是用宏创建的。现在,如果我仅使用 RegistryOne,它适用于集合“One” - 包 one 中的类。

object RegistryOne {
lazy val registry: CodecRegistry =
fromRegistries(
fromCodecs(..),
fromProviders(..),
DEFAULT_CODEC_REGISTRY
)
}

object RegistryTwo {
lazy val registry: CodecRegistry =
fromRegistries(
fromCodecs(..),
fromProviders(..),
RegistryOne.registry,
DEFAULT_CODEC_REGISTRY
)
}

RegistryTwo 中实现的一些类依赖于包 one。所以我只是将 RegistryOne 添加到其中。现在,所有序列化仍然适用于设置“One”的 RegistryTwo.registry。但是对于包 two 的类,我收到运行时异常“找不到类 scala.Option 的编解码器”。似乎 DEFAULT_CODEC_REGISTRY 未包含在结果注册表中?!

我还有 RegistryThreeRegistryFour。至少为了清楚起见和将来的重构,我会将它们分开保存。

如何正确组合编解码器注册表?

最佳答案

事实证明错误消息具有误导性。 ADT 主类的宏还为每个子类创建编解码器。如果您还为其中之一添加了宏创建的编解码器,那么注册表会变得困惑,并且无法反序列化诸如 scala.Option 这样的原始内容。

关于java - 在 scala 中组合 mongodb 编解码器注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52551846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com