PlayFramework 2:从 h2 数据库中获取数据,十进制类型不与 Scala 十进制类型映射
PlayFramework 2: Fetch data from h2 database, decimal types not map with Scala decimal type
我是 PlayFramework
和 Scala
的新人。我正在使用 PlayFramework
anorm
来启用数据库连接并使用嵌入式 h2 database
。当我将值插入 table 时,插入成功完成。但是当我从数据库中获取数据时,它会生成如下错误:
[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));
}
以下是我的 table 结构:
create table User_Detail(
id int NOT NULL PRIMARY KEY,
name varchar(45),
age decimal(20, 2)
)
我也试图在 table 中用 double
替换 decimal
类型,但它再次生成与上面相同的错误
[RuntimeException: Left(TypeDoesNotMatch(Cannot convert 25.50: class java.lang.Double to Float for column ColumnName(USER_DETAIL.AGE,Some(AGE))))
怎么样
case class UserDetail(
val id: Int,
val name: String,
val age: Double
)
编辑:
然后在阅读时使用row[Double]("age")
我是 PlayFramework
和 Scala
的新人。我正在使用 PlayFramework
anorm
来启用数据库连接并使用嵌入式 h2 database
。当我将值插入 table 时,插入成功完成。但是当我从数据库中获取数据时,它会生成如下错误:
[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));
}
以下是我的 table 结构:
create table User_Detail(
id int NOT NULL PRIMARY KEY,
name varchar(45),
age decimal(20, 2)
)
我也试图在 table 中用 double
替换 decimal
类型,但它再次生成与上面相同的错误
[RuntimeException: Left(TypeDoesNotMatch(Cannot convert 25.50: class java.lang.Double to Float for column ColumnName(USER_DETAIL.AGE,Some(AGE))))
怎么样
case class UserDetail(
val id: Int,
val name: String,
val age: Double
)
编辑:
然后在阅读时使用row[Double]("age")