Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →