3
respostas

Caused by: java.sql.SQLException: Nome de coluna inválido

@Query(value = "SELECT DR.ID " + " FROM DADOS_RESULTADO DR " + " WHERE DR.TIPO1= ?1 AND DR.TIPO2= ?2 AND DR.TIPO3 IS NULL", nativeQuery = true) List listarMetasInstanciasPorUsuario(Integer tipo1, Integer tipo2);

Estou executando esse método no projeto. Fiz modificações no Projeto conectando a um banco de dados Oracle e queria executar essa query no formato nativeQuery mais está dando o erro que coloquei como título do Tópico.

3 respostas

Oi Bruno,

A sintaxe da query está correta.

O problema então é no Oracle.

Pela mensagem parece que o nome da coluna que você passou na query está errado.

Dá uma conferida no Oracle, na tabela DADOS_RESULTADO se os nomes das colunas são: TIPO1, TIPO2 e TIPO3.

Você também pode tentar rodar direto no Oracle a query de exemplo, passando algum valor nos parâmetros, para ver se vai funcionar:

SELECT DR.ID FROM DADOS_RESULTADO DR WHERE DR.TIPO1 = 1 AND DR.TIPO2 = 1 AND DR.TIPO3 IS NULL

Eu executo a query no banco e funciona normalmente. Só quando vou executar no sistema está dando problema.

log erro

Caused by: java.sql.SQLException: Nome de coluna inválido at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:445) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3367) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:2009) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:434) ~[ojdbc6-11.1.0.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at com.zaxxer.hikari.pool.HikariProxyResultSet.getInt(HikariProxyResultSet.java) ~[HikariCP-3.2.0.jar:na] at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$2.doExtract(IntegerTypeDescriptor.java:62) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:3012) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1746) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1672) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.loader.Loader.getRow(Loader.java:1561) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:731) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.loader.Loader.processResultSet(Loader.java:990) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.loader.Loader.doQuery(Loader.java:948) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:340) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.loader.Loader.doList(Loader.java:2689) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] ... 151 common frames omitted

Oi Bruno,

Com JPQL, ao invés de SQL Nativo funciona?

Não rola de você utilizar o jpql nesse método?