Question

J'utilise des annotations aux méthodes de marquage qui doivent être exécutées dans une transaction.

Mais, en un seul endroit que je dois faire transactionManager.rollback() manuellement, sans annotation. Comment puis-je obtenir l'objet transactionManager?

Était-ce utile?

La solution

Si vous voulez annuler la transaction en cours, vous pouvez utiliser

    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

Notez qu'il ne rollback pas la transaction immédiatement - il définit le statut « rollback seulement », de sorte que la transaction sera annulée lors de la tentative de commettre.


Dans le cas contraire, si vous avez besoin d'une demaracation programmatique des transactions, vous pouvez utiliser TransactionTemplate, comme décrit dans 10.6 gestion des transactions Programmatic.

Vous pouvez également obtenir une instance de PlatformTransactionManager, mais il est peu utilisé depuis TransactionTemplate est une approche recommandée pour demaracation programmatique des transactions.

Voir aussi:

Autres conseils

Si votre objet est configuré par Spring vous pouvez bien sûr injecter un TransactionManager en elle ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top