Printemps JdbcTemplate batchUpdate la gestion des exceptions
Actuellement notre code utilise batchUpdate méthode de JdbcTemplate de faire des lots d'Insertion.
Ma question est dans le cas d'une exception dans l'un de la mise à jour de la façon de le gérer (à supposer que juste en ajoutant le journal) et continuer avec la prochaine mise à jour sql?
Aussi comment batchUpdate() la méthode fo JdbcTemplate gère les exceptions?
Extrait ici.
/**
* Saves the list of <code>Item</code> objects to the database in a batch mode
*
* @param objects
* list of objects to save in a batch mode
*/
public void save(final List<Item> listOfItems) {
for (List<Debit> list : listOfItems) {
getJdbcTemplate().batchUpdate(insertItem, new ItemBatchPreparedStatementSetter(list));
}
}
La remise des erreurs dans les mises à jour par lot n'est pas facile, et il n'y a pas de solution unique au problème. Il dépend de la façon dont vous vous voulez gérer.
La base de données que vous utilisez?
sa base de données Oracle.
Connaissez-vous un moyen de gérer les erreurs de Printemps mises à jour par lot? Lorsque des exceptions traduction est utilisée, il semble que le premier rencontré est traduit et jeté, donc le retour de l'nombres de mises à jour sont perdus. C'est très bizarre.
La base de données que vous utilisez?
sa base de données Oracle.
Connaissez-vous un moyen de gérer les erreurs de Printemps mises à jour par lot? Lorsque des exceptions traduction est utilisée, il semble que le premier rencontré est traduit et jeté, donc le retour de l'nombres de mises à jour sont perdus. C'est très bizarre.
OriginalL'auteur minil | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Mise à jour par lot comportement est pas défini dans JDBC:
Vous devriez vérifier ce comportement avec votre SGBD.
De toute façon,
BatchUpdateException
sera pris par le printemps et relancés comme RuntimeException après certains de nettoyer (voir détails de mise en œuvre ici).Tous cette logique sera interwined avec les opérations - par exemple, si l'insert est dans les limites de transaction et de vous renvoyer
RuntimeException
par le biais de transactions de limites de transaction (et avec succès toutes les inserts avec elle) sera annulée.Donc souhaité "erreur du journal des lignes de lots de la logique ne peut pas être mis en œuvre de manière efficace, sans connaissances supplémentaires sur votre SGBD et il est pilote JDBC comportement en cas d'erreur lors de lots inserts.
OriginalL'auteur alexkasko
J'ai rencontré le même problème que spring jdbc cesse d'insertion en cas d'erreur d'enregistrement et de ne pas continuer d'insertion.
Ci-dessous mon travail autour de :-
OriginalL'auteur user2796913