Solución:
El problema no es la consulta. La consulta funciona bien.
El problema está en el mapeo de filas que convierte una fila de la ResultSet
en un objeto de dominio. Parece que, como parte del mapeo de filas en su aplicación, está tratando de leer el ResultSet
un valor de una columna que no contiene.
Las líneas clave de su stacktrace son las siguientes tres, cerca de la parte inferior:
at org.apache.commons.dbcp2.DelegatingResultSet.getString(DelegatingResultSet.java:267)
at no.gjensidige.bank.datavarehus.kontonrinfridd.Application.lambda$run$0(Application.java:69)
at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:93)
La mitad de estas tres líneas parecería estar en su código. Línea 69 de tu Application
la clase contiene una lambda que llama ResultSet.getString()
, pero como esto da como resultado un error de ‘Nombre de columna no válido’, entonces (a) está pasando una cadena para un nombre de columna en lugar de un índice de columna numérico, y (b) el nombre de columna que está pasando no existe en el conjunto de resultados.
Ahora que ha editado su pregunta para incluir la llamada a jdbcTemplate.query()
, y en particular la lambda responsable de mapear una fila de conjunto de resultados a un objeto, el problema es un poco más claro. Al llamar rs.getInt(...)
o rs.getString(...)
con nombres de columna en lugar de índices, no incluya prefijos como p.
o x.
. En lugar de escribir rs.getInt("p.applicationid")
o rs.getInt("x.datadocumentid")
, escribir rs.getInt("applicationid")
o rs.getInt("datadocumentid")
.