Tengo una consulta de la siguiente manera:No es posible encontrar una clave generada en Java utilizando getGeneratedKeys de PreparedStatement()
String SQL = "insert into table (id, name) values (sequence.nextval, ?)";
Entonces hago un PreparedStatement así:
//initiate connection, statement etc
pStatement = connection.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);
pStatement.setString(1,'blabla');
pStatement.executeUpdate();
ResultSet rs = pStatement.getGeneratedKeys();
while (rs.next()){
//debugging here to see what rs has
}
Al ejecutar y depurar en ese punto de depuración, veo que mi ResultSet solo tiene una clave, una cadena, no como el ID que espero en absoluto. Al revisar la base de datos, todo funciona bien, los identificadores se insertan y todo. Hay algo acerca de getGeneratedKeys(); eso me confunde.
¿Qué estoy haciendo mal?
Gracias de antemano
No está utilizando 'claves generadas', usted está usando un generador en su INSERT declaración. 'getGeneratedKeys()' se usa para devolver claves generadas por el DB como parte del INSERT (por una columna de identidad o por un desencadenante). –