1.多对多关联映射_单向(用户→角色)
多对多关联映射,需要一张中间表建立关系才可以体现出多对多关系
---
举例说明:
①新建User.java和Role.java
User.java代码如下:
public class User {
private int id;
private String name;
//体现用户可以有多个角色
private Set roles;
public Set getRoles() {
return roles;
}
public void setRoles(Set roles) {
this.roles = roles;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Role.java代码如下:
public class Role {
private int id;
private String name;
//角色:发布人员
Role role1 = new Role();
role1.setName("发布人员");
session.save(role1);
//角色:审核人员
Role role2 = new Role();
role2.setName("审核人员");
session.save(role2);
//用户:lxl
//角色:发布人员,审核人员
User user1 = new User();
user1.setName("lxl");
Set userset1 = new HashSet();
userset1.add(role1);
userset1.add(role2);
user1.setRoles(userset1);
session.save(user1);
//用户:pw
//角色:发布人员
User user2 = new User();
user2.setName("pw");
Set userset2 = new HashSet();
userset2.add(role1);
user2.setRoles(userset2);
session.save(user2);
User user = (User) session.load(User.class, 3);
System.out.println("用户名:"+user.getName());
for(Iterator iterator = user.getRoles().iterator();iterator.hasNext();){
Role role = (Role) iterator.next();
System.out.println("对应的角色:"+role.getName());
}
2.多对多关联映射_双向(用户<-->角色)
需要修改Role.java和Role.hbm.xml的代码,
Role.java需要修改的代码如下:
public class Role {
private int id;
private String name;
//体现角色可以有多个用户
private Set users;
Role role = (Role) session.load(Role.class, 1);
System.out.println("角色名:"+role.getName());
for(Iterator iterator = role.getUsers().iterator();iterator.hasNext();){
User user = (User) iterator.next();
System.out.println("对应的用户:"+user.getName());
}