playframework scala slick允许的属性数量

时间:2018-01-18 13:26:10

标签: scala playframework

在我的Playframework scala应用程序中,我有以下模型:

case class ProcessTemplatesModel(
                                  id: Option[Int] = None,
                                  title: String,
                                  version: String,
                                  createdat: Option[String],
                                  updatedat: Option[String],
                                  deadline: Option[Date],
                                  status: Option[String],
                                  comment: Option[String],
                                  checked: Option[Boolean],
                                  checkedat: Option[Date],
                                  approved: Option[Boolean],
                                  approvedat: Option[Date],
                                  deleted: Boolean,
                                  approveprocess: Int,
                                  trainingsprocess: Option[Int],
                                  previousVersion: Option[Int],
                                  originTemplate: Option[Int],
                                  client: Int,
                                  approveProcessInstance: Option[Int],
                                  responsible: Option[Seq[UserModel]],
                                  accountable: Option[Seq[UserModel]],
                                  consulted: Option[Seq[UserModel]],
                                  informed: Option[Seq[UserModel]])

object ProcessTemplatesModel {
  implicit val processFormat = Json.format[ProcessTemplatesModel]
}

今天我添加了approveProcessInstance: Option[Int],

现在我在编译时遇到了这个错误:No unapply or unapplySeq function found ...在这一行:implicit val processFormat = Json.format[ProcessTemplatesModel]

在这种情况下我的失败是什么?

事先知道

2 个答案:

答案 0 :(得分:4)

22个值是播放JSON的最大值,您可以使用第三方库来增加数量。

这里是Play源代码中的问题线程: https://github.com/playframework/playframework/issues/3174

可能的解决方案之一: https://github.com/xdotai/play-json-extensions

来自build.sbt

的示例
libraryDependencies ++= Seq(
  cache,
  filters,
  ws,
  // More than 22 fields in Json
  "ai.x" %% "play-json-extensions" % "0.8.0"
)

对于Play 2.6,您需要使用版本10:

"ai.x" %% "play-json-extensions" % "0.10.0"

然后,在带有JSON的文件中:

import ai.x.play.json.Jsonx

implicit val processFormat = Jsonx.formatCaseClass[ProcessTemplatesModel]

更多详情:https://github.com/xdotai/play-json-extensions#create-explicit-formatter

答案 1 :(得分:1)

另一个想法是将模型分解为细粒度模型并具有它的组成。这样,您就不必再导入另一个库了!