我有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]。
正如您所猜测的那样,“帐户”是一个集合。我缺少什么能够从联系对象访问此字段?
谢谢
答案 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 = ?