Je suis confronté à une situation très particulière. J'utilise le modèle hibernate avec spring 3.0.5 pour les opérations de DB. Lorsque j'essaie d'insérer un modèle utilisateur la première fois, une exception DataAccessException est levée, que j'attrape. Maintenant, je souhaite réessayer la même opération DB par exemple 3 fois. La deuxième fois quand il, aucune exception n'est levée.Réessayer après le lancement de Spring DataAccessException ne fonctionne pas
Voici le code:
package com.user.profile.dao;
@Repository("userProfileDAOImpl")
public class UserProfileDAOImpl implements IUserProfileDAO {
@Autowired
private HibernateTemplate hibernateTemplate;
public Long insertUserProfileData(User user) throws AppNonFatalException {
Long id = null;
int retryCount = 0;
while (retryCount < 3) {
try {
id = (Long)hibernateTemplate.save(user);
}
catch (DataAccessException e) {
e.printStackTrace();
retryCount++;
System.out.println("Retry Count = " + retryCount);
if (retryCount > 3) {
throw new AppNonFatalException(e.getLocalizedMessage(), "10000", e.getMessage(), e);
}
}
catch (Exception e) {
/* not coming inside this block too second time onwards */
System.out.println("Pure Exception");
}
}
return id;
}
}
je lis que RuntimeExceptions ne doivent pas être pris. Ensuite, comment puis-je réessayer l'opération. Devrais-je réessayer à la couche de service? Est-ce que je manque quelque chose? Toute aide est appréciée.
Peut-être que vous avez une erreur dans les mappages yout, ou la connexion échoue, etc. Si vous postez la trace de la pile de l'exception, je pourrais être en mesure de vous donner un conseil plus précis. – arturo