We are trying to formulate a HQL to cross a many-to-many relationship with a criteria against the remote class
i.e. we want to find all 'users' who are in a certain 'group'
UserBean and GroupBean are related via GroupUserBean class. The GroupUserBean class has two one-to-many relationships
The relationship work fine, I am just having difficulty in coming up with the correct syntanx in the HQL to describe what I want????
I want 'from UserBean where groupUserAssocBeans.groupId in (select id from GroupBean where name in ('YourGroup', 'ourGroup')'
Would that work??
Hibernate version: 3.5 2
Mapping documents:
Code:
<class name="com.UserBean" table="USERS">
<id name="name" type="string" column="USER_NAME"/>
<set name="groupUserAssocBeans" inverse="true" cascade="save-update">
<key column="USER_NAME"/>
<one-to-many class="com.GroupUserAssocBean"/>
</set>
</class>
<class name="com.GroupUserAssocBean"
table="GROUP_USER_ASSOC">
<composite-id name="id" class="com.GroupUserAssocBean$Id">
<key-property name="groupId" access="field" column="GROUP_ID"/>
<key-property name="user" access="field" column="USER_NAME"/>
</composite-id>
<property name="persistanceDate" type="date" column="PERSISTENCE_DATE"/>
<property name="userAliasId" type="string" column="USER_ALIAS_ID"/>
<many-to-one name="groupBean"
column="GROUP_ID"
cascade="save-update"
not-null="true"
insert="false"
update="false"/>
<many-to-one name="userBean"
column="USER_NAME"
cascade="save-update"
not-null="true"
insert="false"
update="false"/>
</class>
<class name="com.GroupBean" table="GROUP">
<id name="id" type="integer" column="GROUP_ID">
<generator class="sequence">
<param name="sequence">GROUP_ID_SEQ</param>
</generator>
</id>
<property name="description" type="string" column="DESCRIPTION"/>
<property name="creatorUserId" type="string" column="CREATOR_USER_ALIAS_ID"/>
<property name="createdDate" type="date" column="CREATE_DATE"/>
<set name="groupUserAssocBeans" inverse="true" cascade="all-delete-orphan">
<key column="GROUP_ID" />
<one-to-many class="com.GroupUserAssocBean"/>
</set>
</class>
Name and version of the database you are using: Oracle 10GR2