Парсер числовых типов и аномалий PostgreSQL с 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)
}

не работает, так как анорм не может конвертировать из 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?


person Simon    schedule 09.11.2014    source источник
comment
Больше числовых преобразований доступно в master.   -  person cchantep    schedule 29.11.2014


Ответы (1)


В соответствии с матрицей совместимости типов в документации вы должны использовать

BigDecimal, Double или Long, чтобы назначить BigDecimal.

Или вы можете привести к real (4-байтовое число с плавающей запятой ) на стороне Postgres: amount::real, тем самым теряя некоторую точность. Не уверен насчет синтаксиса в scala.

person Erwin Brandstetter    schedule 09.11.2014