Ceci est une exception d'exécution qui est jeté par le fournisseur de persistance lorsqu'une transaction est nécessaire, mais n'est pas actif. Une transaction est requise car la méthode start
est annotée comme transactionnelle. Pour se débarrasser de l'exception, vous devrez rechercher pourquoi la ligne est appelée hors d'un contexte de transaction.
Une mise à jour de la base de données peut être possible lors d'une transaction (différente). Dépend des tables verrouillées par la transaction active et de la stratégie de transaction. Mais dans ce cas, il semble que vous besoin pour activer une transaction avant vous entrez la méthode start
.
Avec JPA vous feriez quelque chose comme ceci:
em = emf.createEntityManager();
tx = em.getTransaction();
tx.begin(); // now a transaction is active
start(); // call your method
// call other methods...
tx.commit(); // now the update is actually done
em.close();
Note - c'est proche du code pseudo, la gestion des exceptions est manquante dans cet exemple.
comment? un exemple s'il vous plaît ... Merci. – Altug