0

我注意到这样一个表达式:

DB.withConnection { implicit conn =>
  SQL("Select id, description FROM my_table WHERE id = {id}").on("id" -> 4)()
    .map {
      // TODO: Notice Integer.MAXVALUE = 2,147,483,647
      // How can I handle a value retrieved from a int(11) column ?
      case Row(id:Integer, Some(description:String) ) => 
            new UserInquiry(id.toLong, description)
    }

转换从 java.lang.Integer 中的 'id' 列检索到的值。这很好,除非我将列的大小定义为 9 位以上的长度。这将允许我的表列存储大于 java.lang.Integer 类可以容纳的值。

我们怎样才能克服这个限制?解决方案是让 Anorm 转换为 BigInt 或 Long,但是如何?

4

1 回答 1

1

int(11) 中的 11 只是表示/格式化,因此 int 将是 4 个字节,并且具有与 java Integer 相同的最小值和最大值。如果该列是 BigInt,则必须将其映射到 Long,因为它可能大于 Integer 可以表示的值。

mysql 中 int(11) 列的大小(以字节为单位)?

于 2013-10-14T08:43:23.280 回答