Je développe une application Java-Web en utilisant Hibernate -> MySQL.Exception des transactions imbriquées bien que les méthodes synchronisées et la gestion des erreurs
Un utilisateur voit une page JSP, il appelle des contrôleurs pour obtenir des données de DB, il a aussi une fonction Javascript qui récupère des chaînes de données plus grandes via ajax.
Le problème: Lorsque l'utilisateur actualise la page juste après le chargement de la page, le servlet responsable des données ajax génère cette exception: org.hibernate.TransactionException: les transactions imbriquées pas prises en charge
Je crois Cela est provoqué par une transaction du premier appel, qui est toujours active lorsque l'utilisateur est actualisé et que le second appel est exécuté.
J'ai marqué chaque méthode de contrôleur avec interaction d'hibernation comme synchronisé. Maintenant, l'utilisateur peut actualiser 1-5 fois, mais l'exception se produit toujours. J'utilise Hibernate 4.3.1.
HibernateUtil.openSession() est juste sessionFactory.getCurrentSession();
C'est le contrôleur extrait où l'exception se produit:
public static synchronized Widget getWidgetById(long id) {
Widget result;
Session session = HibernateUtil.openSession();
try {
Transaction tx = session.beginTransaction();
try {
result = (Widget) session.get(Widget.class, id);
tx.commit();
} catch (Exception ex) {
tx.rollback();
throw ex;
}
} finally {
//disabled since we use transaction.auto_close_session
//session.close();
}
return result;
}
Y a-t-il des erreurs que je na pas voir? Quel pourrait être le problème ici?
merci pour la suggestion, mal jeter un oeil à ça! – user2312386