Mondodb驱动程序:案例对象的编解码器

时间:2018-04-06 10:14:18

标签: mongodb scala algebraic-data-types

我试图坚持使用ADT属性的案例类。让我们说:

sealed trait Status
case object Ok
case object Fail

case class Operation(_id: String, status: Status).

我尝试了official approach,但它仅适用于案例类,而对案例对象则失败。还尝试使用Status-String映射定义自定义编解码器。但这种做法也破裂了。

class StatusCodec extends Codec[Status]{
  override def encode(writer: BsonWriter, value: Status, encoderContext: EncoderContext): Unit = {
    writer.writeString(value.toString)
  }

  override def getEncoderClass: Class[Status] = classOf[Status]

  override def decode(reader: BsonReader, decoderContext: DecoderContext): Status = {
        reader.readString match{
         case "Ok" => Ok
         case "Fail" => Fail
        }
      }
    }

终于在mongo JIRA中找到了相关的功能请求 我找到的唯一解决方法是使用普通文档类型。

还有更多选择吗?

0 个答案:

没有答案