PostgreSQL数字类型和anorm解析器与Play!斯卡拉 2.3.



我想使用Postgresql 9.3的数字类型,但我的解析器:

private val Account403Parser: RowParser[Account403] = {
  get[Long]("id") ~
  get[Float]("amount") map {
  case id ~ amount =>
    Account403.apply(id, amount)
}

不起作用,因为 anorm 无法从 java.math.BigDecimal 转换为 Float。

这是我得到的错误:

[RuntimeException: TypeDoesNotMatch(Cannot convert 9.5: class java.math.BigDecimal to Float for column ColumnName(account403.amount,Some(amount)))]

如何更改我的解析器以使其从java.math.BigDecimal 类型转换为 Float 类型?

根据文档中的类型兼容性矩阵,您应该使用

BigDecimalDoubleLong来分配BigDecimal

或者你可以投射到Postgres端的real(4字节浮点数(:amount::real,从而失去一些精度。不确定 scala 中的语法。

最新更新