mysql - 将 Biginteger 转换为 long 会导致错误

标签 mysql postgresql scala playframework

我正在将 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/

相关文章:

scala - Scala 中的模式匹配元组

scala - 在 Scala 中使用的标准二叉搜索树结构是什么?

mysql - MyISAM表意外丢失,我丢失了1个月的数据,而且我的主机没有备份

php - 使用 Foreach 循环仅获取最后 2 个数组

mysql - MySQL 中何时使用单引号、双引号和反引号

ruby-on-rails - Rails + Postgres JSON 字段和 update_column

ruby-on-rails - 您如何获得 Active Record 中子查询的计数?

scala - 为什么 Seq.newBuilder 返回一个 ListBuffer?

mysql 有什么办法可以加快查询速度

spring - 在 spring boot 微服务中回滚 liquibase 的便捷方式