Hibernate version:2.1.7
Mapping documents:
<class name="User" table="USER">
<id name="id" type="java.lang.Long" column="USER_ID" unsaved-value="null">
<generator class="native" />
</id>
<property name="name" type="string" length="50"
column="USER_NAME" />
<set name="rolesSet" table="USER_ROLE_MAP"
access="field" >
<key column="USER_ID" />
<many-to-many column="ROLE_ID" class="Role" />
</set>
</class>
<class name="Role" table="ROLE">
<id name="id" type="java.lang.Long" column="ROLE_ID" unsaved-value="null">
<generator class="increment" />
</id>
<property name="name" type="string" length="50" column="ROLE_NAME" />
<set name="privilegesSet" table="ROLE_PRIV_MAP"
access="field">
<key column="ROLE_ID" />
<many-to-many column="PRIVILEGE_ID" class="Privilege" />
</set>
</class>
Code between sessionFactory.openSession() and session.close():
getHibernateTemplate().saveOrUpdate(dataSource);
Full stack trace of any exception that occurs:
Name and version of the database you are using:
Oracle 9.0
The generated SQL (show_sql=true):
Debug level Hibernate log excerpt:
Code:
role = dao.getRole(roleId);
user = dao.getIser(userId);
user.removeRole(role);
dao.updateUser(user);
I expected that above code would delete the link between a user and a role . But hibernate is not deleting it..(it is not doing anything) I am getting user and role objects from different sessions. So the Set in the user object may not contain the exact role object. Is that the reason? But i tried to override the equals and hashcode methods in the Role class such that two roles are equal if their ids are equal. but that override method in not even getting called...
This is my removeRole method in the User class
Code:
public void removeRole(Role role) {
rolesSet.remove(role);
}
plz help!!
Thanks,
SSSS.