我正在将一个Playframework app数据库从PostgreSQL移动到MySQL。
启动应用时出现此错误:
无法将126:class java.math.BigInteger转换为Long列ColumnName(Speaker.id,Some(id))
似乎来自那里:
def listAll: List[Speaker] = DB.withConnection {implicit c =>
SQL("SELECT * FROM Speaker;")
.as(speakerParser *)}<---
以下是speackerParser的代码:
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的新手,所以我可能会忘记一些非常简单的事情。
答案 0 :(得分:1)
BigInteger可以保存比Int更大的值,因此在不丢失信息的情况下可能会或可能不会进行转换。如果您可以将表定义更改为也使用Int(或将两者都更改为Long),则可以避免丢失信息。