マルチペアマルチリレーションシップマッピング(many-to-many)

4323 ワード

例:1つのユーザーには複数のロールがあり、1つのロールは複数のユーザーによって演じることができます.
public class User {
	private Integer id;
	private String name;
	private Set<Role>roles; 
	public User(){}
	public User(Integer id){
		this.id=id;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Set<Role> getRoles() {
		return roles;
	}
	public void setRoles(Set<Role> roles) {
		this.roles = roles;
	}
}

 
<hibernate-mapping>
	<!--  class  -->
	<class name="model.User" table="mw_user">
		<id name="id" column="id">
		<!--   -->
			<generator class="identity"></generator>
		</id>
		<property name="name"></property>
		<set name="roles" table="mw_mapping">
			<key column="user_id"></key>
			<many-to-many class="model.Role" column="role_id"></many-to-many>
		</set>
		</class>
</hibernate-mapping>

 
public class Role {
	private int id;
	private String roleName;
	private Set<User> users;
	public Role(){};
	public Role(Integer id){
		this.id=id;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getRoleName() {
		return roleName;
	}
	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}
	public Set<User> getUsers() {
		return users;
	}
	public void setUsers(Set<User> users) {
		this.users = users;
	}
	
	
}

 
<hibernate-mapping>
	<!--  class  -->
	<class name="model.Role" table="mw_role">
		<id name="id" column="id">
		<!--   -->
			<generator class="identity"></generator>
		</id>
		<property name="roleName"></property>
		<set name="users" table="mw_mapping">
			<key column="role_id"></key>
			<many-to-many class="model.User" column="user_id"></many-to-many>
		</set>
		</class>
</hibernate-mapping>

 
public static void main(String[] args) {
		Configuration configuration=new Configuration().configure();
		SessionFactory sessionFactory=configuration.buildSessionFactory();
		Session session=sessionFactory.openSession();
		Transaction transaction=session.beginTransaction();
		User user=new User();
		user.setName("zhansan");
		Role role1=new Role();
		role1.setRoleName("manager");
		Role role2=new Role();
		role2.setRoleName("manager2");
		Set<Role> roles = new HashSet<Role>();
		session.save(role1);
		session.save(role2);
		roles.add(role1);
		roles.add(role2);
		user.setRoles(roles);
		session.save(user);
		transaction.commit();
		session.close();
	}

 
public static void main(String[] args) {
		Configuration configuration=new Configuration().configure();
		SessionFactory sessionFactory=configuration.buildSessionFactory();
		Session session=sessionFactory.openSession();
		Transaction transaction=session.beginTransaction();
		User user=(User)session.get(User.class, new Integer(3));
		Set<Role>roles=user.getRoles();
		Iterator<Role> iterator=roles.iterator();
		while(iterator.hasNext()){
			Role role=iterator.next();
			System.out.println(role.getRoleName());
		}
		transaction.commit();
		session.close();
	}