我有一些代碼,試圖訪問相同的關聯路徑兩次,他們是真正相同的別名,但因爲我使用查詢對象,我讓他們在兩個不同的地方,我不知道如何獲得別名。解決Nhibernate中的重複關聯路徑錯誤與查詢
可能是一些代碼可以清除困惑:
var privateBlogQuery = new BlogQuery()
.ByUser(1)
.RemoveHidden()
.FetchUserDetails();
//<-------- In Blog Query object class: ------>
/// Gets all the private blogs the user has permissions to view
public BlogQuery ByUser(int userId)
{
var authorisedUsers = null;
this.Left.JoinQueryOver(r => r.AuthorisedUsers,() => authorisedUsers)
.Where(r => r.User.Id == userId);
return this;
}
/// Removes all private blogs user has marked to be hidden
public BlogQuery RemoveHidden()
{
var authorisedUsers = null;
this.Left.JoinQueryOver(r => r.AuthorisedUsers,() => authorisedUsers)
.Where(r => !r.IsHidden);
return this;
}
/// Loads up details of all users who have permission
/// to view the private blog
public BlogQuery FetchUserDetails()
{
var users = null;
var authorisedUsers = null;
this.Left.JoinQueryOver(r => r.AuthorisedUsers,() => authorisedUsers)
.Left.JoinQueryOver(r => r.User,() => users);
return this;
}
有些時候,我使用所有的3個標準分別與生成的SQL正是我所需要的一切是很好,很正常,只要他們分開使用。
現在我需要一起使用它們,同時nhibernate會拋出一個異常duplicate alias
,並且我改變了這三個函數的別名,但隨後我用duplicate association path
模仿了迎接。
谷歌搜索了一下,我learnt that it is a bug in hibernate而且我還發現了幾個workarounds on this bug
麻煩的是我使用的查詢對象,因此查詢結束了,我真的不知道怎麼在這裏得到的關聯路徑/別名。
那麼我該怎麼辦呢?
這是一個非常具體的解決方法,可能並不適用於您的情況,但我能解決這個問題,當我碰到了?我的表映射到該做的加入對我來說 – 2013-05-08 14:26:22