Запрос критериев гибернации с использованием Projection.rowCount () вызывает числовое переполнение - PullRequest
1 голос
/ 12 мая 2011

Я использую Oracle 11g R2.У меня есть таблица с 9,1 млрд строк.Когда я пытаюсь выполнить запрос критерия, который содержит Projections.rowCount() (что мне нужно сделать, чтобы получить количество строк в таблице), используя .list() или .uniqueResult(), я получаю исключение числового переполнения.

Соответствующая часть трассировки стека:

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

Hibernate решает использовать целое число для сохранения результата независимо от размера таблицы.Как я могу отменить это поведение?

1 Ответ

0 голосов
/ 12 мая 2011

Используйте SQLProjection , используя возврат Type, достаточно большой для вашего результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...