将 Biginteger 转换为 long 会导致错误

Converting Biginteger to long causes error

我正在将 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 *)}<---

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

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