MongoDB Scala驱动程序不允许在案例类中使用Map集合

问题描述 投票:1回答:1

我刚开始使用MongoDB,我正在尝试用Scala编写一个小应用程序来测试Mongo。我创建了以下case类,以便将Documents转换为Scala类:

case class User(
                 _id: ObjectId,
                 userId: String,
                 items: Map[String, Int]
               )

object User {
  def apply (userId: String , items: Map[String, Int]): User
    = new User (new ObjectId, userId, items)

  implicit val codecRegistry: CodecRegistry = fromRegistries (fromProviders (classOf [User]), DEFAULT_CODEC_REGISTRY)
}

我得到以下错误但我不知道为什么因为Map键实际上是字符串。

[ERROR] error: Maps must contain string types for keys
[INFO]   implicit val codecRegistry: CodecRegistry = fromRegistries (fromProviders (classOf [User]), DEFAULT_CODEC_REGISTRY)
[INFO]                                                                                      ^
[ERROR] one error found

我也将codecRegistry应用于MongoDatabase。

非常感谢你。

mongodb scala
1个回答
0
投票

问题是我使用的是为Scala 2.11而不是2.12编译的驱动程序版本。通过更改Maven依赖关系

<dependency>
   <groupId>org.mongodb.scala</groupId>
   <artifactId>mongo-scala-driver_2.11</artifactId>
   <version>2.2.1</version>
</dependency>

<dependency>
   <groupId>org.mongodb.scala</groupId>
   <artifactId>mongo-scala-driver_2.12</artifactId>
   <version>2.2.1</version>
</dependency>

解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.