使用Play的PostgreSQL数字类型和anorm解析器!斯卡拉2.3

时间:2014-11-09 01:52:41

标签: postgresql scala playframework-2.3 anorm

我想使用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类型?

1 个答案:

答案 0 :(得分:1)

根据type-compatibility matrix in the documentation你应该使用

BigDecimalDoubleLong分配BigDecimal

或者您可以在Postgres端转换为real(4字节浮点数):amount::real,从而丢失一些精度。不确定scala中的语法。