首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Hibernate删除中间表中数据,来指点啊

2012-03-09 
Hibernate删除中间表中数据,来大虾指点啊!!!!现有用户(User)表,字段uid角色表(role),字段rid中间表(user_r

Hibernate删除中间表中数据,来大虾指点啊!!!!
现有用户(User)表,字段uid 角色表(role),字段rid 中间表(user_role),字段:uid,rid
相信大家一看就知道怎么回事了,现在我想在中间表中删除一条记录,要求控制台输出:
delete user_role where uid=? and rid =?
用户表中的配置
<set name="roles" table="USER_ROLE" cascade="save-update" lazy="false" inverse="false">
<key column="USER_ID"></key>
<many-to-many column="ROLE_ID" class="Role"/>
</set>
角色表中的配置
<set name="users" table="USER_ROLE" cascade="save-update" lazy="false" inverse="true">
<key column="ROLE_ID"></key>
<many-to-many column="USER_ID" class="Users"/>
</set>
测试时写的代码:
Users user = userservice.searchUsersByUid(7);
Role role = roleservice.searchByRid(1);
user.getRoles().remove(role);
comondao.add(user);
控制台输出了:
insert into USERS (USER_NAME, PASSWORD, HOME_NUMBER, EMAIL, ENABLED, DELETED) values (?, ?, ?, ?, ?, ?)
Hibernate: update ROLES set ROLE_NAME=?, DESCRIPTION=? where ROLE_ID=?
Hibernate: update USERS set USER_NAME=?, PASSWORD=?, HOME_NUMBER=?, EMAIL=?, ENABLED=?, DELETED=? where USER_ID=?
Hibernate: update ROLES set ROLE_NAME=?, DESCRIPTION=? where ROLE_ID=?
Hibernate: delete from USER_ROLE where USER_ID=?
Hibernate: insert into USER_ROLE (USER_ID, ROLE_ID) values (?, ?)
求大虾指点!!!!!!!!!!!!!!!!!!

[解决办法]
很久没用过了

我也帮顶
[解决办法]
Users user = userservice.searchUsersByUid(7);
Role role = roleservice.searchByRid(1);
user.getRoles().remove(role);
----------------------------------
这里不能这么写吧?你查出来的user对象和role对象是没有任何关系的,他们的关系只在中间表存在,如果要操作这两张表,那么直接去中间表增删改查就行了。
比如你现在要写一个删除,直接去中间表的dao写一个你最上面的SQL就OK了,有可能需要设置级联删除。
因为中间表也是一张单独的表,从OO的角度来说他也没什么特殊的。

热点排行