2011-07-08 13 views
5

Me he encontrado con un gran problema en la clasificación utilizando nhibernate hql. Tengo una LICENCIA de tabla que tiene un USUARIO de propiedad (correspondiente a una clase USUARIO) que lo vincula a otra tabla PERFIL DE USUARIO. La tabla USERPROFILE tiene una propiedad UserName que es nvarchar (cadena en la clase USER). Esta propiedad USUARIO de LICENCIA puede ser nula dependiendo de si la LICENCIA está asignada o no.orden NHibernate utilizando CASE

Tengo que obtener una lista filtrada de licencias ordenadas en la propiedad USUARIO. Quiero que todas las licencias con usuarios nulos estén en la parte inferior de la lista y todas las demás licencias ordenadas alfabéticamente en la propiedad USERNAME de USUARIO. He utilizado la siguiente consulta para esto:

from License license where <various filters> order by CASE WHEN User IS NULL THEN '0' ELSE User.UserName END" 

Todo lo que obtengo de esta consulta es la lista de las únicas licencias asignadas. No se devuelven todas las licencias con USUARIO nulo. ¿Puede alguien por favor ayudarme aquí?

Además, cuando uso "orden por CASO CUANDO el usuario ES NULO ENTONCES '0' ELSE User.UserName END", entonces solo aparecen los resultados con usuarios no nulos, pero cuando uso "orden de CASE CUANDO el usuario ES NULL THEN '0' ELSE User.UserProfileId END "o simplemente" ordenar por usuario "aparecen todos los usuarios, pero su orden de clasificación se basa en UserProfileId y no userName (porque UserProfileId es la clave externa). He usado las últimas versiones de nhibernate pero sin éxito.

Me pregunto si hay siquiera existe alguna manera de hacer lo que yo quiero lograr ...

+0

considerar leer sobre el formato que utiliza stackoverflow -http: //stackoverflow.com/editing-help - que hace que sus mensajes mucho más legible , y las personas podrán/más probabilidades de ayudar cuando puedan leer fácilmente su publicación –

Respuesta

0

intente descargar la última versión de NHibernate y la última versión de fluentnhibernate (si lo está usando) es válida la siguiente consulta: from License license where order by User.UserName END la nueva versión de NHibernate está haciendo combinación izquierda cuando se utiliza para

+0

He intentado con la nueva versión de nh Iibernate (y no uso con fluidez). Aún así, el problema sigue siendo el mismo. – user835199

Cuestiones relacionadas