2011-03-10 56 views
0

我HQL查詢取消引用集合休眠

SELECT contact.countryCode, contact.firstName, contact.familyName, **contact.accounts.country** 
FROM 
Contact contact, IN (contact.accounts)accounts 
WHERE 
contact.gender = ? OR accounts.country = ? 

和獲得非法企圖取消引用集合[contact0_.id.accounts]與元素屬性參考[國家]。

在那裏,如你所猜,「賬戶」是一個集合。我缺少什麼能夠從聯繫人對象訪問此字段?

謝謝

+0

你的結果集是什麼樣的? – 2011-03-10 15:44:55

+0

@Diego Mijelshon:我會得到的行,是的,我認爲會有重複聯繫行,因爲多個帳戶。但這是可能的嗎?謝謝 – Julia 2011-03-10 16:09:05

回答

2

您已經創建了一個別名accountscontact.accounts,你應該在SELECT使用它:

SELECT contact.countryCode, contact.firstName, contact.familyName, accounts.country ... 

而且我不知道aboutn NHibernate的,但JOIN似乎更加廣泛使用該構造的語法:

SELECT contact.countryCode, contact.firstName, contact.familyName, accounts.country 
FROM Contact contact JOIN contact.accounts accounts 
WHERE contact.gender = ? OR accounts.country = ? 
+0

Thanx的迴應!那麼我知道連接將是要走的路,但這個查詢是自動生成的,用查詢生成器(用戶選擇字段(用反射獲得)並作爲查詢生成器的輸入,聲明的字段名稱被髮送)。在那裏,別名是構建和參考層次結構。所以我無法進行連接,因爲查詢生成器不知道它們。好的,我會嘗試使用這個賬戶別名。我希望我解釋。(不確定) – Julia 2011-03-10 16:07:19

+0

愚蠢的我,作品,thanx – Julia 2011-03-10 16:22:25