Я новичок в PlayFramework
и Scala
. Я использую PlayFramework
anorm
для подключения к базе данных и использования встроенных h2 database
. Когда я вставляю значения в таблицу, вставка выполняется успешно. Но когда я извлечение данных из базы данных он генерирует и ошибок, как показано ниже:PlayFramework 2: выборка данных из базы данных h2, десятичные числа не сопоставляются с десятичной точкой Scala
[RuntimeException: Left(TypeDoesNotMatch(Cannot convert 25.50: class java.math.BigDecimal to Float for column ColumnName(USER_DETAIL.AGE,Some(AGE))))]
После мой POJO:
case class UserDetail(
val id: Int,
val name: String,
val age: Float
)
Ниже мой контроллер:
def getUserDetail = Action{
val userDetail = UserDetail(13, "James", 25.9F);
var sql: SqlQuery = SQL("SELECT * FROM USER_DETAIL");
def users: List[UserDetail] = DB.withConnection { implicit connection =>
sql().map(row => UserDetail(row[Int]("id"), row[String]("name"), row[Float]("age"))).toList
}
println(">>>>>>>>>>>>>>>>>>>>: "+users)
Ok(Json.toJson(users));
}
Ниже мой стол Структура:
create table User_Detail(
id int NOT NULL PRIMARY KEY,
name varchar(45),
age decimal(20, 2)
)
Я также пытаюсь заменить decimal
типа с double
в таблице, но она снова генерировать ту же ошибку, как выше
[RuntimeException: Left(TypeDoesNotMatch(Cannot convert 25.50: class java.lang.Double to Float for column ColumnName(USER_DETAIL.AGE,Some(AGE))))
Вы пробовали использовать h2-типы Real или Float4 в своем столе, а не Decimal (20,2) или Double? согласно H2 docs, который сопоставляется с java.lang.Float, который должен преобразовать в scala.Float без проблем. http://www.h2database.com/html/datatypes.html#real_type –
@SteveWaldman благодарит за ваш комментарий. нет, я не пытаюсь это сделать, но когда я попытаюсь, я буду обновлять комментарии. –
Какую версию анорма вы используете? Последняя версия предоставляет больше числовых преобразований. – cchantep