17 votes

Est-il possible d'obtenir les clés générées en utilisant Spring JDBC batchUpdate ?

J'utilise JDBC et je veux faire des insertions par lots, mais j'ai besoin des clés générées pour la prochaine série d'insertions - y a-t-il un moyen de réaliser cela ?

MapSqlParameterSource[] batchArgs ....

DAL.getNamedParameterTemplate().batchUpdate("INSERT INTO...", batchArgs);

Merci

11voto

Tahir Akhtar Points 5843

Les gens du cadre de Spring a tenté de trouver une solution à ce problème. Mais ils ont abandonné la tentative lorsqu'il est devenu évident qu'il n'y a aucun moyen de garantir que la solution fonctionnera avec tous les pilotes JDBC. En effet, la spécification JDBC ne garantit pas que les clés générées seront disponibles après une mise à jour du lot. Les pilotes JDBC sont libres d'implémenter cette fonctionnalité comme ils l'entendent. Dans certains cas, la base de données sous-jacente peut ne pas renvoyer les clés générées, ce qui rend impossible la prise en charge de cette fonctionnalité par le pilote.

Ainsi, même si vous travaillez directement avec JDBC, vous devrez vérifier si votre base de données et votre pilote JDBC mettent à disposition les clés générées.

Je me souviens avoir réussi à le faire avec le pilote JDBC de MySQL 5.0 au prix de quelques efforts, mais je n'ai jamais intégré cette solution dans notre application de production, car nous devions également prendre en charge des versions plus anciennes de MySQL.

0voto

Boris Pavlović Points 22207

Utilisez séquences db pour récupérer la prochaine valeur de clé primaire et l'utiliser dans l'instruction d'insertion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X