代码之家  ›  专栏  ›  技术社区  ›  Felix

playframework scala slick允许多少属性

  •  2
  • Felix  · 技术社区  · 7 年前

    在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 回复  |  直到 5 年前
        1
  •  6
  •   Andriy Kuba    7 年前

    22个值是最大可用JSON,您可以使用第三方库来增加该值。

    这里是播放源中的问题线程: 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

        2
  •  1
  •   joesan    7 年前

    另一个想法是将模型分解为细粒度模型并对其进行组合。这样,您就不必再导入另一个库了!