首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Anorm和get[Double]

Anorm和get[Double]
EN

Stack Overflow用户
提问于 2013-07-09 16:49:39
回答 1查看 302关注 0票数 0

我仍在努力掌握scala、Play和anorm的某些方面的诀窍。现在,我已经阅读了所有的手册和在线文档,但是我似乎能找到一个令人满意的解决方案来解决我的问题。

我有以下代码用于撤回一个名为MyThing的对象:

代码语言:javascript
复制
case class MyThing(val code: String, val type:String, val value: Double, var id:Long)

object MyThing{

  val myThingConverter = {
    get[String]("type") ~ get[String]("code")~get[Double]("value") ~ get[Long]("id") match {
      case type ~ code ~ value ~ id  =>
        MyThing( "test", " test", value ,  213 )
    }
  }


  val loadQuery =
    """
        "select  * from THINGS where id = {id}"
    """

  def loadThings(id: Long): Option[Thing] = {
    DB.withConnection {
      implicit c =>
        SQL(loadQuery)
          .on('id -> id).as(myThingConvert *)
    }.headOption
}

问题是在‘MyThing’( "test",“test",value,213 )处出现了一个错误。错误为"value“:

代码语言:javascript
复制
Type mismatch, expected: Double: actual: Any

我做错了什么?

编辑:添加了缺失的parm

Ps。

我觉得从要创建对象的select查询的结果集中提取值的模式匹配是严重过度的。还有别的方法可以减轻痛苦吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 21:55:14

当我在您的转换器中将"match“替换为"map”时,它会为我编译:

代码语言:javascript
复制
val myThingConverter = {
  get[String]("type") ~ get[String]("code") ~ getDouble]("value") ~ get[Long]("id") map {
    case tpe ~ code ~ value ~ id  =>
      MyThing( "test", " test", value ,  213 )
  }
}

此外,您不能/不应该在Scala中命名变量"type“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17553820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档