Hibernate多对多操作

多对多映射配置

1.创建两个实体类,用户和角色(一个用户有多个角色,你个角色可以属于多个用户)

2.在两个实体类之间相互表示

(1) 一个用户里面表示所有角色,使用set集合

private Set<Role> seRole = new HashSet<Role>();

(2)一个角色里面表示多个用户,使用set集合

private Set<User> setUser = new HashSet<User>();

3.配置多对多关系

(1)在用户中显示多个角色,使用set标签

<set name="setRole" table="user_role">

<!-- name属性:角色set集合名称 table属性:第三张表名称-->

<key column="userid"></key>

<!--key标签里面配置当前映射文件在第三张表外键名称-->

<many-to-many class="com.User" column="roleid"></many-to-one>

<!-- class属性:实体类全路径   column属性:角色表在第三张表中外键名称-->

</set>

(2)角色表表示所有用户,使用set标签

<set name="setUser" table="user_role">

<key column="roleid"></key>

<many-to-many class="com.User" column="userid"></many-to-many>

</set>

4.在核心配置文件中引入映射文件

<mapping resource="...User.hbm.xml">

<mapping resource="...Role.hbm.xml">



多对多级联保存

根据用户保存角色

1.在用户配置文件中set标签进行配置,cascade值设为save-update

<set name="setRole" table="user_role" cascade="save-update">

2.代码实现

建立关系,把角色放到XX用户里面   user1--r1/r2  user2--r2/r3

user1.getSetRole().add(r1);

user1.getSetRole().add(r2);

user2.getSetRole().add(r2);

user2.getSetRole().add(3);

session.save(user1);

session.save(user2);



多对多级联删除

1.在用户配置文件中set标签进行配置,cascade值设为delete

<set name="setRole" table="user_role" cascade="save-update,delete">

2.删除用户

User user = session.get(User.class,1);

session.delete(user);



维护第三张表

1.用户和角色多对多关系,维护关系通过第三张表维护

2.让某个用户有某个角色

第一步   先根据id查询用户和角色

User lucy = session.get(User.class,1);

Role role = session.get(Role.class,1);

第二步   把角色放入用户的set集合里面

lucy.getSetRole().add(role);

3.让某个用户没有某个角色

User lucy = session.get(User.class,1);

Role role = session.get(Role.class,1);

lucy.getSetRole().remove(role);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。