2014-09-01 6 views
0

J'ai 3 classes d'entités: Pair, BATBpa et SNSBPa. Entité La paire a des dépendances telles que pair.snsBpa et pair.batBpa.hibernate: tri des valeurs nulles

J'ai une table de Pair entités et quand je les trier, par exemple:

ORDER BY pair.snsBpa.snsId (snsId is string) 

hql supprime les lignes où pair.snsBpa est-null. Comment faire hql pour ne pas supprimer les lignes nulles? voici ma demande HQL:

SELECT p FROM Pair p LEFT JOIN FETCH p.batBpa LEFT JOIN FETCH p.snsBpa ORDER BY p.snsBpa.snsId asc 

Répondre

0

J'ai trouvé une solution à mon problème. Le point est que ce morceau de code dans Mise en veille prolongée

ORDER BY p.snsBpa.snsId 

créer une jointure croisée expression dans la demande de MSSQL, c'est la raison pour laquelle il n'y a pas de lignes typeof PAIRE où p.snsBpa == null. Voilà pourquoi j'ai créé un alias:

SELECT p FROM Pair p LEFT JOIN FETCH p.batBpa bat LEFT JOIN FETCH p.snsBpa sns ORDER BY sns.snsId asc 

Cette création d'alias supprime des jointures croisées de la demande pure sql et je me suis toutes les lignes avec des valeurs nulles et non nulles.

0

essayer:

SELECT p FROM Pair p LEFT JOIN FETCH p.batBpa LEFT JOIN FETCH p.snsBpa ORDER BY p.snsBpa.snsId asc NULLS LAST 

modifier:

SELECT p FROM Pair p LEFT JOIN FETCH p.batBpa LEFT JOIN FETCH p.snsBpa ORDER BY 
CASE WHEN p.snsBpa.snsId IS NULL THEN 1 ELSE 0 END, 
    p.snsBpa.snsId ASC 
+0

J'ai essayé d'ajouter NULLS LAST mais cela n'a pas fonctionné – SergeBud

+0

pourriez-vous essayer ma réponse éditée et voir si elle aide – user3487063

Questions connexes