【问题标题】:MongoDB Scala - scala.collection.immutable.$colon$colon cannot be cast to scala.collection.immutable.VectorMongoDB Scala - scala.collection.immutable.$colon$colon 不能转换为 scala.collection.immutable.Vector
【发布时间】:2019-03-22 15:34:30
【问题描述】:

我正在使用具有案例类编解码器映射的 Scala Mongo 驱动程序,根据其文档,例如:

object CodecProviders {
  lazy val codecRegistry = fromRegistries( fromProviders(
    classOf[User],
// ... other case classes
  ), DEFAULT_CODEC_REGISTRY )
}

在将我的一个案例类更改为使用 Vector 而不是 Seq 后,我开始收到一些与编解码器映射相关的错误:

java.lang.ClassCastException: scala.collection.immutable.$colon$colon 不能转换为 scala.collection.immutable.Vector

case class 看起来像:

case class MyCaseClass(metadata: Metadata, data: Vector[Item]) 

case class 没有什么特别之处。切换到Vector 的主要原因是由于性能优势(基于index 的访问的访问时间恒定),更改为Vector 后的其他案例类工作正常,我只是偶尔遇到这个异常特定类,所以我不得不将其改回Seq

什么可能导致这个异常?

【问题讨论】:

    标签: mongodb scala vector mapping case-class


    【解决方案1】:

    如果您之前使用过Seq,您的数据库中可能有List 实例。

    在将data 字段更改为Vector 之后,驱动程序从数据库中读取List$colon$colon 是来自List::)并尝试将其转换为@987654329 @这是不可能的。

    您可以改为将data 更改为List,否则您将不得不解决 mongo 驱动程序尝试将其读取为一体的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 2022-08-11
      • 2013-01-24
      • 1970-01-01
      • 2019-12-21
      • 2016-06-15
      相关资源
      最近更新 更多