scala播放表单如何处理java bigdecimal
我试着用系统的值来填写表格scala播放表单如何处理java bigdecimal,scala,playframework-2.0,type-conversion,bigdecimal,Scala,Playframework 2.0,Type Conversion,Bigdecimal,我试着用系统的值来填写表格 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), Pers
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)
}
但一些“系统”值是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]) => ?
我该如何处理这个问题?在阿诺姆或附近的某个地方看起来像是个问题 您可以从错误描述中看到,查询结果中的
sys\u owner1\u id
和sys\u owner2\u id
是biginger
s,但在表单中声明为long
我不熟悉anorm,但解决方案是在anorm中声明这些ID,或者在表单映射中将它们声明为
biginger
,或者在查询中将它们从biginger
转换为long
。谢谢-我被迫使用java BigDecimal,就像Oracle JDBC用于数字类型一样-但是表单帮助程序无法使用它们。。。我想不出有什么办法可以绕过它。我希望在我开始之前,他们能在网站上发布你不能使用的Oracle游戏。我和typesafe的人谈过,但他们只是说扔掉anorm,使用SLICK——但几乎没有医生,它还没有融入游戏