12.4.14. Comparaisons relationnelles

Les comparaison impliquent un des opérateurs de comparaison - =, >, >=, <, <=, <>]>. HQL also defines <![CDATA[!= comme opérateur de comparaison synonyme de <>. Les opérandes doivent être du même type.

Exemple 12.17. Exemples de comparaisons relationnelles

// numeric comparison
select c
from Customer c
where c.chiefExecutive.age < 30

// string comparison
select c
from Customer c
where c.name = 'Acme'

// datetime comparison
select c
from Customer c
where c.inceptionDate < {d '2000-01-01'}

// enum comparison
select c
from Customer c
where c.chiefExecutive.gender = com.acme.Gender.MALE

// boolean comparison
select c
from Customer c
where c.sendEmail = true

// entity type comparison
select p
from Payment p
where type(p) = WireTransferPayment

// entity value comparison
select c
from Customer c
where c.chiefExecutive = c.chiefTechnologist
Les comparaison peuvent également impliquer des qualificateurs de sous-requêtes - ALL, ANY, SOME. SOME et ANY sont synonymes.
Le qualificateur ALL passe à true si la comparaison est true pour toutes les valeurs qui se trouvent dans le résultat de la sous-requête. Passe à false si le résultat de la sous-requête est vide.

Exemple 12.18. Exemple de qualificateur de comparaison de sous-requête ALL

// select all players that scored at least 3 points
// in every game.
select p
from Player p
where 3 > all (
   select spg.points
   from StatsPerGame spg
   where spg.player = p
)
Le qualificateur ANY/SOME passe à true si la comparaison est true pour toutes les valeurs qui se trouvent dans le résultat de la sous-requête. Passe à false si le résultat de la sous-requête est vide.