-->

ANORM解析浮点值(Anorm parse float values)

2019-07-30 02:19发布

在游戏框架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?

Answer 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驱动器,其可能是不正确(取决于列定义)返回值的类型相匹配。



文章来源: Anorm parse float values