7 votes

HQL avec vérification de Null pour une relation un à un

J'ai la relation un à un suivante dans Hibernate (qui peut être nulle) :

Je cherche à sélectionner toutes les entités qui ont des détails non nuls avec HQL :

from Entity e where e.details is not null

mais cela renvoie toutes les entités, peu importe si les détails sont nuls ou non.

Quelle serait alors la HQL correcte ?

8voto

serg Points 43893

D'accord j'ai trouvé la solution :

select e from Entity e join e.details d where d is not null

2voto

tmarthal Points 650

Vous pouvez également utiliser très probablement la fonction elements HQL.

De la section Expressions de la documentation HQL 3.3

from Cat cat where exists elements(cat.kittens)

Ce qui devrait se traduire par votre requête comme suit

Sélectionner Entity e where exists elements(e.details)

1voto

bpgergo Points 9407

Supposons que cette relation un à un fasse partie de la mise en correspondance de la table herpderp, donc l'entité herpderp a la propriété details.

Voulez-vous dire que la requête renvoie les enregistrements herpderp où le champ herpderp.details est nul ?

Ou voulez-vous dire quelque chose comme ceci ?

from Entity e where e.details.someDetailsField is not null

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X