0

大きく、多くのレベルの構成を持つネストされたケースクラスのmongoコーデックを自動的に作成したいと考えています。

簡単な例として、次のクラスのコーデックを作成するとします。

case class Person(name: String, address: Address, birthDate: Date)
case class Address(country: String, city: String, streetAddress: String)

createCodecProvider を使用する場合:

    private val customCodecs = Macros.createCodecProvider[Person]()

    private val javaCodecs = CodecRegistries.fromCodecs(
        new DateCodec())

    private val codecRegistry = fromRegistries(fromProviders(customCodecs),
        javaCodecs,
        DEFAULT_CODEC_REGISTRY)

エラーが発生します:

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class io.equalum.server.alert.Address.

次の方法は機能します。

    private val customCodecs = fromProviders(classOf[Person], classOf[Address])

    private val javaCodecs = CodecRegistries.fromCodecs(
        new DateCodec())

    private val codecRegistry = fromRegistries(customCodecs,
        javaCodecs,
        DEFAULT_CODEC_REGISTRY)

しかしもちろん、大規模なケース クラスの場合、これを記述して保守するのは非常に困難です。

4

0 に答える 0