次のような表現があることに気付きました。
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)
}
「id」列から取得した値を java.lang.Integer に変換します。列のサイズを 9 桁以上の長さで定義しない限り、それで問題ありません。これにより、テーブルの列に java.lang.Integer クラスが保持できるよりも大きな値を格納できます。
どうすればこの制限を乗り越えることができるでしょうか? 解決策は、Anorm を BigInt または Long に変換することですが、どうすればよいのでしょうか?