【问题标题】:Anorm parse float values异常解析浮点值
【发布时间】:2012-06-24 19:12:07
【问题描述】:

在 Play 框架 2.0 中,我正在尝试使用这样的行解析器从 PostgreSQL 加载一个真实(即单精度浮点)类型的列:

case class Foo(bar: Float)

object Foo {
    def all = DB.withConnection { implicit c =>
        SQL("SELECT * FROM foo").as(fooParser *)
    }

    val fooParser = {
        get[Float]("bar") map {     
          case bar => Foo(bar)
        }
    }
}

这会产生错误:could not find implicit value for parameter extractor: anorm.Column[Float]

当使用双精度类型时,一切正常。是否可以在 Anorm 中使用单精度浮点数?

【问题讨论】:

    标签: scala playframework-2.0 anorm


    【解决方案1】:

    您始终可以基于现有的列解析器创建自己的列解析器:

     implicit def rowToFloat: Column[Float] = Column.nonNull { (value, meta) =>
      val MetaDataItem(qualified, nullable, clazz) = meta
      value match {
        case d: Float => Right(d)
        case _ => Left(TypeDoesNotMatch("Cannot convert " + value + ":" + value.asInstanceOf[AnyRef].getClass + " to Float for column " + qualified))
      }
    }
    

    但它匹配 JDBC 驱动程序返回的值的类型,这可能不正确(取决于列定义)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多