web-dev-qa-db-fra.com

HQL "est nul" Et "! = Null" sur une colonne Oracle

Est-ce que hibernate convertit column != null dans HQL en un column is null dans SQL ?

53
Eric V

C’est un opérateur binaire en veille prolongée que vous devriez utiliser

is not null

Regardez 14.10. Expressions

91
Eduard

Non, vous devez utiliser is null et is not null en HQL.

35
JB Nizet

Si vous voulez utiliser null valeurs avec '=' ou '<>' opérateurs, vous pouvez trouver le

réponse de @egallardo hier

très utile.

Petit exemple pour '=': L'expression

WHERE t.field = :param

vous refactor comme ça

WHERE ((:param is null and t.field is null) or t.field = :param)

Vous pouvez maintenant définir le paramètre param sur une valeur non nulle ou sur null:

query.setParameter("param", "Hello World"); // Works
query.setParameter("param", null);          // Works also
7
Boris Brodski

Voir aussi ce lien Gestion de la nullité conditionnelle dans HQL pour obtenir des conseils et astuces sur la gestion des comparaisons avec les valeurs nulles et non-nulles.

1
egallardo