2009-05-27 6 views
0

Est-il possible de traduire cette instruction sql en CreateCriteria et en second lieu NHibernate traite ORDER BY COALESCE?NHibernate COALESCE

SELECT obs1.OBSLOPNR, obs1.LOKALLOPNR, obs2.OBSLOPNR, obs2.LOKALLOPNR 
FROM 
    (SELECT * FROM OBS WHERE OBS.LOKALLOPNR = 9) AS obs1 
FULL OUTER JOIN 
    (SELECT * FROM OBS WHERE OBS.LOKALLOPNR = 8) AS obs2 
ON obs1.ARTLOPNR = obs2.ARTLOPNR 
ORDER BY COALESCE(obs1.OBSLOPNR, obs2.OBSLOPNR) 
+0

Dans ce cas, nous allons toujours en faire une procédure de stockage, puis utiliser session.getNameQuery() pour appeler cette procédure. Pourquoi ne faisons-nous pas les choses faciles? –

Répondre

0

Je ne sais pas createCriteria, mais Hibernate/HQL supporte COALESCE, IFNULL ou ISNULL En fonction de votre base de données sous-jacente que dans la clause Where.

Vous pourriez être en mesure de définir une fonction dans le dialecte et cela devrait également fonctionner dans la clause select. Je ne l'ai pas testé cette

Voir: http://www.hibernate.org/hib_docs/v3/reference/en/html/queryhql.html

0

Il n'y a pas de soutien intégré. Vous pouvez cependant créer votre propre classe de commande. Here is a good example.

Vous pouvez créer une classe qui accepte n'importe quelle chaîne de sql, ou vous pouvez essayer de créer une classe CoalesceOrder.

Questions connexes