gpt4 book ai didi

NHibernate 使用 CASE 命令

转载 作者:行者123 更新时间:2023-12-03 17:58:47 24 4
gpt4 key购买 nike

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

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

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

我从这个查询中得到的只是分配的许可证列表。不会返回所有 USER 为空的许可证。有人可以帮助我吗?

另外,当我使用“按 CASE WHEN User IS NULL THEN '0' ELSE User.UserName END 排序”时,只会出现那些非空用户的结果,但是当我使用“按 CASE WHEN User IS NULL THEN '0 排序时” ' ELSE User.UserProfileId END”或简单地“按用户排序”所有用户出现,但他们的排序顺序基于 UserProfileId 而不是 userName(因为 UserProfileId 是外键)。我使用了最新版本的 nhibernate,但没有任何成功。

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

最佳答案

尝试下载最新版本的 NHibernate 和最新版本的 fluentnhibernate(如果您正在使用它),然后使用以下查询:from License license where order by User.UserName ENDNHibernate 新版本在使用 order 时正在做 left join

关于NHibernate 使用 CASE 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6623374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com