我注意到这样一个表达式:
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,但是如何?
答案 0 :(得分:1)
int(11)中的11只是表示/格式化,因此int将是4个字节并且具有与java Integer相同的最小值和最大值。如果列是BigInt,则必须将其映射到Long,因为它可能大于Integer可以表示的值。