hibernate 双向多对多配置

 

用户(User)和角色(Role)是多对多的关系。

 

一个用户可以对应多个角色,一个角色也可以对应多个用户。

 

比如张三对应CEO,保洁2个角色,而保洁也可以对应张三,李四2个用户。

 

通常多对多关系,必须引出第3张表。

 

1.从User这一端开始配。

 

在User里面必须有一个集合set来存放角色,举例如下。

 

package com.bjpowernode.hibernate.domain;

import java.util.Set;


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 String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	
}

 

那么配置如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

	<class name="com.bjpowernode.hibernate.domain.User" table="t_user">
		<id name="id">
			<generator class="native"/>
		</id>
		
		<property name="name"/>
		
		<set name="roles" table="t_user_role">
			<key column="user_id"/>
			<many-to-many class="com.bjpowernode.hibernate.domain.Role" column="role_id"/>
		</set>
	
	</class>
	
</hibernate-mapping>

 

说明:凡是碰到set,在配置文件中肯定用set标签,name就是指在User类中的集合名,在set还必须指定一个表名,这里就是指第3张表:t_user_role

 

然后下面配置一个外键,是和User相关的,这里起名叫user_id,

然后下面配置set集合里面放置的对象,即Role,而且也要给它起个列名role_id,放在第三张表里。

 

至此,单向的多对多配置完成。

 

--------------------------------------------------------------------------------------------------------------------

下面配置双向多对多的关系。

 

Role类中添加User的集合,代码如下:

package com.bjpowernode.hibernate.domain;

import java.util.Set;


public class Role {
	private int id;
	private String name;
	private Set users; 
	
	public Set getUsers() {
		return users;
	}
	public void setUsers(Set users) {
		this.users = users;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	
}

 

配置如下,和User的配置差不多:

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

	<class name="com.bjpowernode.hibernate.domain.Role" table="t_role">
		<id name="id">
			<generator class="native"/>
		</id>
		
		<property name="name"/>
		
		<set name="users" table="t_user_role">
			<key column="role_id"/>
			<many-to-many class="com.bjpowernode.hibernate.domain.User" column="user_id"/>
		</set>
	
	</class>
	
</hibernate-mapping>

 

这样双向多对多就配置完成了。

 

在保存时,先保存谁都无所谓。

 

 

 refurl:http://blog.csdn.net/yinghuayu1324117/article/details/6519331

 

 

 

 

 

 

 

                                                                                                                                                                       

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值