多对多关联映射单向
t_user id | name 1 | 10 2 | 祖儿 3 | 杰伦 |
t_role id | name 1 | 数据录入人员 2 | 商务主管 3 | 大区经理 |
t_user_role userid | roleid 1 | 1 1 | 2 2 | 2 2 | 3 3 | 1 3 | 2 3 | 3 |
具体映射方式:
<set name="roles" table="t_user_role">要创建的中间表
<key column="userid"></key>中间表中的一个字段
<many-to-many class="com.hibernate.Roles" column="roleid"></many-to-many>中间表的另一个字段
</set>
双向:
<set name="users" table="t_user_role">
<key column="roleid"></key>
<many-to-many class="com.hibernate.Users" column="userid"></many-to-many>
</set>
inverse用于一对多,多对多
table属性必须和单向关联中的table属性值一致
key中column属性要与单向关联中many-to-many中的column属性值一致
在many-to-many中的column属性值要与单向关联中key标签的column属性值一致
Roles r1 = new Roles();
r1.setName("r1");
session.save(r1);
Roles r2 = new Roles();
r2.setName("r2");
session.save(r2);
Roles r3 = new Roles();
r3.setName("r3");
session.save(r3);
Users u1 = new Users();
Set u1Roles = new HashSet();
u1Roles.add(r1);
u1Roles.add(r2);
u1.setName("u1");
u1.setRoles(u1Roles);
session.save(u1);