PlayFramework 2:从h2数据库中获取数据,十进制类型不使用Scala十进制类型进行映射

时间:2015-03-07 14:35:26

标签: scala anorm

我是PlayFrameworkScala的新用户。我正在使用PlayFramework anorm来启用数据库连接并使用嵌入式h2 database。当我将值插入表中时,插入成功完成。但是当我从数据库中获取数据时,它会生成错误,如下所示:

[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))))

1 个答案:

答案 0 :(得分:1)

怎么样

case class UserDetail(
 val id: Int,
 val name: String,
 val age: Double
)

编辑:

然后在阅读时使用row[Double]("age")