将Biginteger转换为long会导致错误

时间:2015-04-21 14:34:46

标签: mysql postgresql scala playframework

我正在将一个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的新手,所以我可能会忘记一些非常简单的事情。

1 个答案:

答案 0 :(得分:1)

BigInteger可以保存比Int更大的值,因此在不丢失信息的情况下可能会或可能不会进行转换。如果您可以将表定义更改为也使用Int(或将两者都更改为Long),则可以避免丢失信息。