该文档描述了使用磁铁模式来隐式转换为 BSON 类型。请参阅此页面http://mongodb.github.io/mongo-java-driver/4.1/driver-scala/bson/scala-documents/。我尝试定义一个扩展 BsonTransformer 的隐式对象,但它找不到该类型的编解码器。我错过了什么/有人让这个工作吗?下面的示例代码,假设正在调用 insert 方法。
case class CustomType(specialString: String)
implicit object TransformCustomType extends BsonTransformer[CustomType] {
def apply(value: CustomType): BsonString =
BsonString(value.specialString)
}
lazy val db: MongoDatabase = client.getDatabase(dbName).withCodecRegistry(DEFAULT_CODEC_REGISTRY)
lazy val testCollection: MongoCollection[CustomType] = db.getCollection[CustomType](collectionName)
def insert: Future[Completed] = testCollection.insertOne(CustomType("a")).toFuture
错误 - org.bson.codecs.configuration.CodecConfigurationException:找不到类 com.bla.BlaClass$CustomType 的编解码器。
*请注意,我知道这可以通过
val codecRegistry = fromRegistries(fromProviders(classOf[CustomType]))
但我只是用这个例子来要求学习一个更混乱的情况下的磁铁图案。