【发布时间】:2020-02-04 08:47:18
【问题描述】:
我已经定义了我的枚举字段:
object ContractTypeEnum extends Enumeration {
type ContractTypeEnum = Value
val Key1 = Value("key1")
val Key2 = Value("key2")
}
并在scala中定义了它的映射Postgres:
trait EnumImplicit {
implicit val ContractTypeEnumMapper = PostgresDriver.createEnumJdbcType("contract_type", ContractTypeEnum)
}
在我的表的案例类中,我将列定义为:
contractType: Option[ContractTypeEnum.ContractTypeEnum]
并创建了它的Implicit Formatter,如下所示:
implicit val contractTypeFormat = new Format[ContractTypeEnum.ContractTypeEnum] {
def reads(json: JsValue) = JsSuccess(ContractTypeEnum.withName(json.as[String]))
def writes(myEnum: ContractTypeEnum.ContractTypeEnum) = JsString(myEnum.toString)
}
我得到的是以下错误:
Error:(61, 92) No apply function found for scala.Enumeration.Value
implicit val optionFormat: Format[ContractTypeEnum] = Format.optionWithNull(Json.format[ContractTypeEnum])
下面的reader/writer也写了:
object ContractJsonModel {
implicit val ContractJsonModelFormat = {
implicit val optionFormat: Format[ContractTypeEnum] = Format.optionWithNull(Json.format[ContractTypeEnum])
Jsonx.formatCaseClass[ContractJsonModel]
}
}
什么是错误,我应该如何解决?
【问题讨论】:
标签: scala enums playframework slick