Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 6 · Exercice de TD
Annuler une commande
Relations et transactions · niveau 2
Énoncé
Écrire un service Annulation dont la méthode annuler(numero) remet en stock les livres d'une commande puis la supprime. Combien d'appels au dépôt des lignes de commande faut-il pour supprimer les lignes ? Le vérifier par un test.
Corrigé
@Service
public class Annulation {
private final CommandeDepot commandes;
public Annulation(CommandeDepot commandes) {
this.commandes = commandes;
}
@Transactional
public void annuler(long numero) {
Commande commande = commandes.findById(numero).orElseThrow();
for (LigneCommande ligne : commande.getLignes()) {
ligne.getLivre().remettreEnStock(ligne.getQuantite());
}
commandes.delete(commande); // les lignes partent avec elle (cascade)
}
}
Aucun : la cascade (CascadeType.ALL) supprime les lignes avec la commande. Les livres remis en stock sont des entités gérées, mises à jour à la fin de la transaction. Le test vérifie le stock (8 après la commande de 4, 12 après l'annulation), puis l'absence de commande et de ligne.
100 % gratuit
La suite du chapitre est sur Adloun
- 9 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.