Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
12.4.8. Expressions de chemins qualifiés
Dans le passé, il était indiqué que les associations collection-valued faisaient référence aux valeurs de la dite collection. Pour ce type de collection, il existe également un ensemble d'expressions de qualification explicites.
Tableau 12.9. Expressions de chemins qualifiés
Expression | Description |
---|---|
VALUE |
Correspond à la valeur de la collection. C'est équivalent à ne pas spécifier de qualificateur. Utile pour démontrer une intention. Valide pour n'importe quel type de référence collection-valued.
|
INDEX |
Selon les règles HQL, ceci est valable pour les mappages et pour les listes qui spécifient une annotation
javax.persistence.OrderColumn pour désigner la clé de Mappage ou la position de la Liste (aka la valeur OrderColumn). JPQL toutefois réserve ceci pour une utilisation dans la case Liste et ajoute la clé dans la case Mappage. Les applications intéressées par la transférabilité des fournisseurs JPA doivent tenir compte de cette distinction.
|
KEY |
Uniquement valide pour le mappage. Se réfère à la clé de mappage. Si la clé elle-même est une entité, elle peut naviguer davantage.
|
ENTRY |
Uniquement valide pour les mappages. Voir le tuple (combinaison d'une clé et de sa valeur) logique du Mappagev
java.util.Map.Entry . ENTRY n'est valide qu'en tant que chemin final et uniquement pour la clause sélectionnée.
|
Exemple 12.9. Exemple de références de collection qualifiée
// Product.images is a Map<String,String> : key = a name, value = file path // select all the image file paths (the map value) for Product#123 select i from Product p join p.images i where p.id = 123 // same as above select value(i) from Product p join p.images i where p.id = 123 // select all the image names (the map key) for Product#123 select key(i) from Product p join p.images i where p.id = 123 // select all the image names and file paths (the 'Map.Entry') for Product#123 select entry(i) from Product p join p.images i where p.id = 123 // total the value of the initial line items for all orders for a customer select sum( li.amount ) from Customer c join c.orders o join o.lineItems li where c.id = 123 and index(li) = 1