我在Postgresql 9.1中有一个bigint类型的视图.此类型应在
Java中映射到Long,但实际上映射到BigInteger.所以
resultSet.getLong(columnPos)
导致Arrayindexoutofboundsexception.
resultSet.getBigInteger(columnPos)
要么
resultSet.get(columnPos)
两者都有以下toString和解析工作正常.
对此有何正确处理?我应该先获取BigInteger,调用toString并解析Long吗?或者是否有更好的方法来告诉ResultSet或ScrollableResults正确的Java列类型?
谢谢.
解决方法
bigint数据类型正确映射到BigInteger,因为它的含义是:它是一个大整数,可能不适合Long.
您可以使用resultSet.get(columnPos),然后检查返回对象的类.
我们为此编写了一个实用程序类,所以我们会这样做:
public Long getLongFromresultSet( ResultSet rs,int columnPos ) { Object value = rs.get( columnPos ); if( value instanceof Number) { //this should handle any numeric Java type like BigInteger,Long etc. return ((Number)value).longValue(); //autoBoxing here } ... //handle non-Number cases }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。