`
wandejun1012
  • 浏览: 2690014 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 

 

 

 

 

 

 

                                                                                                                                                                       

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Hibernate双向一对一关联映射(注解版)

    Hibernate双向一对一关联映射(注解版)

    Hibernate ORM - 一对多双向关联关系

    NULL 博文链接:https://dreamzhong.iteye.com/blog/1200915

    Hibernate的配置详解

    Hibernate配置详解,详细描述了Hibernate的配置文件,一对一 一对多,多对多的单双向配置详解。

    hibernate4.3.8的annotation及xml的一对多的双向案例

    一个完成了hibernate的注解和配置的简单案例;这是一个一对多【多对一】的案例,其实一对多的案例就可以解决项目中的大部分需求。因为多对多可以一般我们转化为两个多对一的案例;

    hibernate 体系结构与配置 参考文档(html)

    一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在...

    hibernate配置文件

    该文档总结了hibernate各种关联模式,单向多对一,单向一对多,双向一对多,双向多对多,自身一对多关联,以及oracle,mysql的相关数据库连接配置,希望对您学习有帮助。

    Hibernate+中文文档

    7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many ...

    hibernate xml配置和@注解配置关系映射

    针对hibernate关系映射进行了一个总结,包含xml配置形式和@注解配置形式,one-to-many,one-to-noe,many-to-one,many-to-many等单方向的配置和双方都配置的事例

    hibernate3.2中文文档(chm格式)

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...

    HibernateAPI中文版.chm

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...

    Hibernate中文详细学习文档

    7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many ...

    Hibernate 中文 html 帮助文档

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在...

    Hibernate 课件_配置文件详解

    希望能对大家学习 Hibernate 提供帮助. 这是第二篇, 内容如下:Hibernate配置文件;jdbc.fetch_size;jdbc.batch_size; POJO 类和数据库的映射文件*.hbm.xml;主键生成策略generator;映射集合属性;延迟加载策略;映射...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类集合  15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索...

    最全Hibernate 参考文档

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在集合中出现的依赖对象 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...

    Hibernate教程

    8.5.1. 一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖...

    Hibernate学习

    Hibernate双向关联配置用set与bag的总结

    hibernate 教程

    值集合和多对多关联(Collections of Values and Many-To-Many Associations) 6.4. 一对多关联(One-To-Many Associations) 6.5. 延迟初始化(延迟加载)(Lazy Initialization) 6.6. 集合排序(Sorted ...

    hibernate one-to-many 单/双向关联映射配置心得

    NULL 博文链接:https://yinxiaoyong.iteye.com/blog/426752

Global site tag (gtag.js) - Google Analytics