我正在将 playframework 应用数据库从 PostgreSQL 迁移到 MySQL。
启动应用程序时出现此错误:
Cannot convert 126: class java.math.BigInteger to Long for column ColumnName(Speaker.id,Some(id))
它似乎来自那里:
def listAll: List[Speaker] = DB.withConnection {implicit c =>
SQL("SELECT * FROM Speaker;")
.as(speakerParser *)}<---
这是speakerParser的代码:
private val speakerParser: RowParser[Speaker] = {
get[Long]("id") ~
get[String]("firstName") ~
get[String]("lastName") ~
get[String]("title") ~
get[String]("team") ~
get[String]("organisation") ~
get[String]("email") map {
case id ~ firstName ~ lastName ~ title ~ team ~ organisation ~ email => Speaker(id, firstName, lastName, title, team, organisation, email)
}}
引起我麻烦的列是 id:
Table: Speaker
Columns:
id bigint(20) UN AI PK
title varchar(20)
firstName varchar(255)
lastName varchar(255)
email varchar(255)
team varchar(255)
organisation varchar(255)
这段代码不是我写的,但我需要修改它。
我是 postgres、scala 和 Play 的新手,所以我可能会忘记一些非常简单的东西。
最佳答案
BigInteger 可以容纳比 Int 更大的值,因此在不丢失信息的情况下可能会也可能不会进行转换。如果您可以更改表定义以也使用 Int(或将两者更改为 Long),则可以避免信息丢失。
关于mysql - 将 Biginteger 转换为 long 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29775283/