在Play Framework2.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中使用单精度浮点数?
发布于 2012-06-25 15:02:53
您始终可以在现有列解析器的基础上创建自己的列解析器:
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驱动程序返回的值类型相匹配,这可能是不正确的(取决于列定义)。
https://stackoverflow.com/questions/11180429
复制相似问题