Ola Amigos,
Estou recebendo um erro na execução de uma query
Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2231)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)
... 73 more
Caused by: java.sql.SQLException: Numeric Overflow
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:7465)
at oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:123)
at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:521)
at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1563)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:275)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:275)
at org.hibernate.type.IntegerType.get(IntegerType.java:51)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
Na tabela em questão existe uma coluna NUMBER.
Name Null Type
----------------- ---- --------------
EVENT_NO NUMBER
A tabela esta mapeada assim
@Id
@Column(name = "EVENT_NO")
private Integer id;
Acontece que o valor retornado pela query (2535872295) e maior que integer que vai ate 2147483647.
Tentando mudar o meu tipo java para Long, recebo um
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
O que fazer agora? Alguém tem uma solução?
Será que alterando no banco e no seu mapeamento ORM não funciona, apenas um chute
Mude o tipo do seu id para Long.
Nao posso mudar o banco e isto esta em produção.
Ja tentei mudar o id para diversos tipos, Long, Float, BigInteger, nada funciona.
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigInteger
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
Parece que o hibernate so esta aceitando um Integer ali!!!
E Double na sua entidade, já tentou?
Ja sim.
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double
[quote=JoseBarros]Ola Amigos,
Estou recebendo um erro na execução de uma query
Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2231)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)
... 73 more
Caused by: java.sql.SQLException: Numeric Overflow
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:7465)
at oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:123)
at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:521)
at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1563)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:275)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:275)
at org.hibernate.type.IntegerType.get(IntegerType.java:51)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
Na tabela em questão existe uma coluna NUMBER.
Name Null Type
----------------- ---- --------------
EVENT_NO NUMBER
A tabela esta mapeada assim
@Id
@Column(name = "EVENT_NO")
private Integer id;
Acontece que o valor retornado pela query (2535872295) e maior que integer que vai ate 2147483647.
Tentando mudar o meu tipo java para Long, recebo um
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
O que fazer agora? Alguém tem uma solução?
[/quote]
não tem alguma FK no seu banco utilizando este campo, seja como referenciador ou como referenciado?
outra coisa que ia sugerir o teste é mudar para double ou float (primitivo mesmo).
[quote=maior_abandonado][quote=JoseBarros]Ola Amigos,
Estou recebendo um erro na execução de uma query
Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2231)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)
... 73 more
Caused by: java.sql.SQLException: Numeric Overflow
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:7465)
at oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:123)
at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:521)
at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1563)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:275)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:275)
at org.hibernate.type.IntegerType.get(IntegerType.java:51)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
Na tabela em questão existe uma coluna NUMBER.
Name Null Type
----------------- ---- --------------
EVENT_NO NUMBER
A tabela esta mapeada assim
@Id
@Column(name = "EVENT_NO")
private Integer id;
Acontece que o valor retornado pela query (2535872295) e maior que integer que vai ate 2147483647.
Tentando mudar o meu tipo java para Long, recebo um
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
O que fazer agora? Alguém tem uma solução?
[/quote]
não tem alguma FK no seu banco utilizando este campo, seja como referenciador ou como referenciado?
outra coisa que ia sugerir o teste é mudar para double ou float (primitivo mesmo).
[/quote]
Ja tentei, double, float e tanto objeto como primitivo. Mesmo problema. E nao tem FK utilizando esse campo!
Alguem tem alguma outra ideia???
Pode ver que dá exceção em um monte de getInt()
Provavelmente é a propriedade ID ou alguma outra propriedade do tipo integer da sua entidade, que na hora que faz o Parse do registro para um objeto, ele não consegue colocar aquele valor porque não tem espaço.
Provavelmente algum valor de campo Inteiro de algum registro que está no retorno desta consulta (query) é tão grande que não cabe na propriedade do objeto.
Tente trabalhar com os próximos tipos inteiros ( long, Long BigInteger) em todos os campos do tipo Integer de sua entidade.
Eu tive um problema parecido, eu tinha um registro que tinha um id = 994999219998213259939 (exemplo)
Este id era do tipo Long no objeto e quando eu fazia a query, este registro estava nesta listagem e não funcionava. numeric overflow ! resolvi trocando o tipo Long para BIGINTEGER
Espero ter ajudado.
Até mais.