Quelque chose comme ceci devrait fonctionner :
// tell the driver you want the generated keys
stmt = c.prepareStatement("INSERT ... ", Statement.RETURN_GENERATED_KEYS);
stmt.executeBatch();
// now retrieve the generated keys
ResultSet rs = stmt.getGeneratedKeys();
while (rs.next()) {
int id = rs.getInt(1);
.. save the id somewhere or update the items list
}
Je pense (je ne suis pas sure!) que les clés sont retournées dans l'ordre où elles ont été générées. Ainsi, la première ligne du ResultSet doit correspondre au premier "élément" de la liste que vous traitez. Mais vérifiez-le !
Modifier
Si cela ne fonctionne pas, essayez de spécifier les colonnes réelles pour lesquelles les valeurs sont générées :
stmt = c.prepareStatement("INSERT ... ", new String[] {"id"});