2011-07-08 32 views
5

我遇到了使用nhibernate hql排序的大問題。我有一個表LICENSE有一個屬性USER(對應於一個USER類),它將它鏈接到另一個表USERPROFILE。 USERPROFILE表有一個屬性UserName,它是nvarchar(USER類中的字符串)。 LICENSE的USER屬性可以爲空,具體取決於LICENSE是否被分配。通過使用CASE的NHibernate訂單

我必須獲取按USER屬性排序的已過濾許可證列表。我希望所有使用空用戶的許可證都位於列表的底部,並且所有其他許可證都按照其用戶的USERNAME屬性按字母順序排序。我已使用以下查詢爲此:

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

我只是列出了只有分配的許可證。所有使用空USER的許可證都不會返回。有人可以幫我在這裏。

此外,當我使用 「ORDER BY CASE WHEN用戶爲null,則 '0' ELSE User.UserName END」,那麼只有與非空用戶的結果出現,但是當我通過CASE使用」訂單時,用戶被NULL THEN'0'ELSE User.UserProfileId END「或簡單地」按用戶排序「所有用戶都出現了,但他們的排序順序基於UserProfileId而不是userName(因爲UserProfileId是外鍵)。我使用了最新版本的nhibernate,但沒有任何成功。

我想知道是否有存在的話沒有辦法做什麼我要完成......

+0

考慮閱讀有關計算器使用-http格式化時from License license where order by User.UserName END NHibernate的新版本正在做左連接://stackoverflow.com/editing-help - 它使您的文章很多更具可讀性,並且當他們可以輕鬆地閱讀您的帖子時,人們將會/更可能提供幫助 –

回答

0

嘗試下載NHibernate的最新版本和fluentnhibernate的最後一個版本(如果您使用它),然後使用下面的查詢: 使用順序

+0

我已經嘗試過新版本的nh ibernate(和我不使用流利)。問題依然存在。 – user835199