Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 5 · Application directe du cours
La valeur du stock de chaque rayon
Les données en base avec JPA et Spring Data · niveau 2
Énoncé
Le libraire veut connaître, pour chaque rayon, la valeur de son stock (somme des prix multipliés par les stocks). Écrire une requête JPQL qui renvoie directement une liste de records ValeurRayon(String rayon, BigDecimal valeur), triée par rayon, et calculer à la main le résultat attendu pour l'Informatique.
Corrigé
JPQL sait appeler le constructeur d'un record, désigné par son nom complet :
// Exercice 5.3 : la valeur du stock de chaque rayon
@Query("""
select new fr.librairie.ValeurRayon(l.rayon, sum(l.prix * l.stock))
from Livre l group by l.rayon order by l.rayon""")
List<ValeurRayon> valeurParRayon();
package fr.librairie;
import java.math.BigDecimal;
public record ValeurRayon(String rayon, BigDecimal valeur) {
}
SQL émis (le produit et la somme sont calculés par la base) :
Hibernate: select l1_0.rayon,sum((l1_0.prix*l1_0.stock)) from livre l1_0 group by l1_0.rayon order by l1_0.rayon
Pour l'Informatique : euros. Le test attend la liste complète : Informatique 651,00 ; Littérature 283,60 () ; Mathématiques 315,00 ; Physique 0,00.
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.