使用CASE的NHibernate订单

use*_*199 5 nhibernate sql-order-by

我在使用nhibernate hql进行排序时遇到了一个大问题.我有一个表LICENSE,它有一个属性USER(对应一个USER类),它将它链接到另一个表USERPROFILE.USERPROFILE表有一个属性UserName,它是nvarchar(USER类中的字符串).LICENSE的此USER属性可以为null,具体取决于是否分配了许可证.

我必须获取按USER属性排序的过滤许可证列表.我希望所有具有空用户的许可证位于列表的底部,并且所有其他许可证按字母顺序排序在其USER的USERNAME属性上.我使用了以下查询:

from License license where <various filters> order by CASE WHEN User IS NULL THEN '0' ELSE User.UserName END"
Run Code Online (Sandbox Code Playgroud)

我从这个查询中得到的只是已分配许可证的列表.不返回具有null USER的所有许可证.有人可以帮帮我.

此外,当我使用"按用户IS NULL那样'命令时'0'ELSE User.UserName END"时,只有那些非空用户的结果出现,但是当我使用"按用户输入时用户IS NULL那么"0 "ELSE User.UserProfileId END"或简单地"按用户排序"所有用户出现但他们的排序顺序基于UserProfileId而不是userName(因为UserProfileId是外键).我使用了最新版本的nhibernate但没有任何成功.

我想知道是否有任何方法可以做我想要完成的事情......

kle*_*had 0

尝试下载最新版本的NHibernate和最新版本的 Fluentnhibernate(如果您正在使用它)然后使用以下查询: from License license where order by User.UserName END 新版本的NHibernate在使用顺序时正在执行左连接