scala play form如何处理java bigdecimal

时间:2013-09-04 23:05:19

标签: scala playframework-2.0 type-conversion bigdecimal

我尝试使用System

的值填充表单
  def edit(id: Long) = IsAuthenticated { username => implicit request =>
    User.findByEmail(username).map { user =>
      System.findById(id).map { system =>
      Ok(html.systems.editForm(id, systemForm.fill(system), Person.options, user))
    }.getOrElse(NotFound)
    }.getOrElse(Forbidden)
  }

但是某些'system'值是java.math.BigDecimal

 val systemForm = Form(
    mapping(
      "id" -> ignored(NotAssigned:Pk[BigDecimal]),
      "sys_name" -> nonEmptyText,
      "sys_desc" -> nonEmptyText,
      "sys_owner1_id" -> longNumber,
      "sys_owner2_id" -> optional(longNumber)
    )(System.apply)(System.unapply)
  )

它说:

type mismatch; found : (anorm.Pk[java.math.BigDecimal], String, String, String, Option[String], java.math.BigDecimal, Option[java.math.BigDecimal]) => models.System required: (anorm.Pk[java.math.BigDecimal], String, String, Long, Option[Long]) => ? 

我该如何处理?

1 个答案:

答案 0 :(得分:0)

在anorm或附近的地方看起来像问题。

正如您在错误说明中看到的那样sys_owner1_idsys_owner2_id在查询结果中为BigInteger,但在表单中声明为long

我不熟悉anorm,但是解决方案是在anorm中声明这些id,或者在表单映射中将它们声明为BigInteger或在您的BigInteger转换为long查询。