我的HibernateUserImpl映射如下所示
<set name="groups" table="OS_USER_GROUP" inverse="false" cascade="none" lazy="false">
<key column="user_id"/>
<many-to-many column="group_id" class="com.opensymphony.user.provider.hibernate3.ahxu.impl.HibernateGroupImpl"/>
</set>
我做
之类的HQL查询select distinct hibuser from HibernateUserImpl hibuser, hibuser.groups.elements hibgroup where hibuser.name = ? and hibgroup.name = ?
我的hibuser.groups错误。元素。我有什么遗漏的吗?
控制台中的错误
org.hibernate.hql.ast.QuerySyntaxException: hibuser.groups.elements is not mappe
d [select distinct hibuser from com.opensymphony.user.provider.hibernate3.ahxu.i
mpl.HibernateUserImpl hibuser, hibuser.groups.elements hibgroup where hibuser.n
ame = ? and hibgroup.name = ?]
答案 0 :(得分:0)
我认为您需要明确加入。
select distinct hibuser
from HibernateUserImpl hibuser
join hibuser.groups hibgroup
where hibuser.name = ? and hibgroup.name = ?
答案 1 :(得分:0)
hibuser.groups 是一个集合,因此您无法访问该集合元素的属性。
这可以说明如下:
列出群组= ...; groups.elements &lt; - 非法功能访问。
因此,要访问 hibuser.groups.elements ,您需要进行多个连接:
select element
from HibernateUserImpl hibuser
join hibuser.groups group
join group.elements element
where hibuser.name = ? and hibgroup.name = ? and element.whatever = something
但是在这里你只选择hibuser,因此你不应该加入其他集合。不加入将首先为您提供更快的查询,并避免使用distinct。尽量避免分开。