Eu armazeno consultas sql em arquivos de recursos com formatação bem legível para humanos (com quebras de linha e recuos). De repente, me deparei com um problema: consulta simples, como abaixo, funciona bem sem buscar o valor da coluna de código gerada via keyholder,
insert into
my_table
(
code
)
values
(
my_table_seq.nextval
)
mas retorna ORA-00931: identificador ausente\n quando o keyholder é usado:
...
var keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(
"MY INSERT QUERY",
new MapSqlParameterSource(),
keyHolder,
new String[]{"code"}
);
...
Depurei o driver jdbc oracle (ojdbc8/ojdbc10 19.24) e notei que o espaço em branco após into-keyword causa esse comportamento: AutoKeyInfo.getTableName retorna "\n" em vez de "MY_TABLE" (veja a imagem abaixo)! Remover o espaço em branco resolveu o problema.
É um bug (e é possível enviá-lo aos desenvolvedores do ojdbc)?