解除引用集合Hibernate

时间:2011-03-10 15:30:19

标签: nhibernate hibernate hql

我有HQL查询

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

并且非法尝试使用元素属性引用[country]取消引用集合[contact0_.id.accounts]。

正如您所猜测的那样,“帐户”是一个集合。我缺少什么能够从联系对象访问此字段?

谢谢

1 个答案:

答案 0 :(得分:2)

您已为accounts创建了别名contact.accounts,您应该在SELECT中使用它:

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

我也不确定NHibernate,但JOIN似乎是该结构使用的更广泛的语法:

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