La spécification JDBC 4.1, section 13.6 Récupération des valeurs générées automatiquement dit :
Il est défini par l'implémentation si
getGeneratedKeys
renverra les valeurs générées après avoir appelé leexecuteBatch
méthode.
Vous devrez donc vérifier si votre pilote le prend réellement en charge pour les mises à jour par lots. Comme indiqué dans la réponse de Philip O., la récupération des clés générées n'est pas prise en charge avec les mises à jour par lots, comme indiqué dans Oracle 12 JDBC Standards Support :
Vous ne pouvez pas combiner les clés générées automatiquement avec la mise à jour par lot.
Dans tous les cas, s'il est pris en charge par votre pilote, votre préparation de déclaration doit être remplacée par le code ci-dessous pour demander au pilote de récupérer les clés générées :
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
Remarque :vous devrez peut-être utiliser l'une des autres méthodes de préparation des clés générées (prepareStatement(sql, columnIndexes)
ou prepareStatement(sql, columnNames)
) car Oracle renverra le ROW_ID
avec la méthode de mon exemple.