Dans notre projet java, nous utilisons ORM avec hibernation et le printemps. J'ai rencontré des problèmes lors de la suppression d'objets persistants. Par exemple, cette méthode d'échantillonnage obtient des entités par ids puis les supprimer:Spring transaction propagation_required issue
@Transactional
public void remove(List<Long> ids) {
SearchTemplate template = new SearchTemplate();
template.addParameter("milestoneId",ids);
List <InvoiceQueue> items = this.findByCriteria(template);
...
this.delete(items);
}
Méthode exécute Ok sans exception, mais ne supprime pas les éléments de la DB. L'ajout de l'annotation suivante à la définition de la méthode @Transactional(propagation = Propagation.REQUIRES_NEW)
permet de résoudre le problème. Est-ce que quelqu'un peut expliquer pourquoi cela ne fonctionne pas avec le type de propagation par défaut PROPAGATION_REQUIRED?
Merci d'avance.
détails Environnement:
hibernate.version 3.5.5-finale, spring.version 3.0.5.RELEASE
Il peut y avoir un problème avec la transaction environnante. Si vous utilisez PROPAGATION_REQUIRED, cette méthode utilise la transaction en cours. S'il existe une exception au cours de la transaction en cours après l'exécution de cette méthode, les modifications peuvent être annulées. –