Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Projections.rowCount()执行Hibernate条件查询会导致数字溢出_Java_Oracle_Hibernate_Jdbc - Fatal编程技术网

Java 使用Projections.rowCount()执行Hibernate条件查询会导致数字溢出

Java 使用Projections.rowCount()执行Hibernate条件查询会导致数字溢出,java,oracle,hibernate,jdbc,Java,Oracle,Hibernate,Jdbc,我正在使用Oracle 11g R2。我有一张91亿行的桌子。当我尝试使用.list()或.uniqueResult()运行包含Projections.rowCount()(获取表中的行数)的条件查询时,我会得到一个数字溢出异常 堆栈跟踪的相关部分: java.sql.SQLException: Numeric Overflow oracle.jdbc.driver.NumberCommonAcessor?throwOverFlow oracle.jdbc.driver.NumberCo

我正在使用Oracle 11g R2。我有一张91亿行的桌子。当我尝试使用
.list()
.uniqueResult()
运行包含
Projections.rowCount()
(获取表中的行数)的条件查询时,我会得到一个数字溢出异常

堆栈跟踪的相关部分:

java.sql.SQLException: Numeric Overflow
  oracle.jdbc.driver.NumberCommonAcessor?throwOverFlow
  oracle.jdbc.driver.NumberCommonAcessor?getInt
  oracle.jdbc.driver.OracleResultSetImpl?getInt
  oracle.jdbc.driver.OracleResultSet?getInt
  org.hibernate.type.IntegerType?get  <---------------- oops.
  org.hibernate.type.NullableType?nullSafeGet
  org.hibernate.type.NullableType?nullSafeGet
  org.hibernate.loader.criteria.CriteriaLoader?getResultColumnOrRow
  org.hibernate.loader.Loader.getRowFromResultSet
  org.hibernate.loader.Loader.doQuery
  org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections
  org.hibernate.loader.Loader.doList
  org.hibernate.loader.Loader.listIgnoreQueryCache
  org.hibernate.loader.Loader.list
  org.hibernate.loader.criteria.CriteriaLoader?list
  org.hibernate.impl.SessionImpl?.list
  org.hibernate.impl.CriteriaImpl?.list
  mypackage.myclass.GetRowCount
java.sql.SQLException:数值溢出
oracle.jdbc.driver.NumberCommonAcessor?throwOverFlow
oracle.jdbc.driver.NumberCommonAcessor?getInt
oracle.jdbc.driver.OracleResultSetImpl?getInt
oracle.jdbc.driver.OracleResultSet?getInt

org.hibernate.type.IntegerType?获取使用一个返回
type
足够大的值来获取结果

这似乎已经解决了它。我使用的不是
criteria.setProjection(Projections.rowCount())
而是
criteria.setProjection(新SQLProjection(“count(*)as rowCount”),新字符串[]{“rowCount”},新类型[]{new LongType()}