`
wandejun1012
  • 浏览: 2732828 次
  • 性别: 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双向一对多经典实例

    **标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...

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

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

    hibernate双向多对多关联映射(注解版)

    在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将深入探讨如何使用Hibernate的注解配置来处理数据库中的双向多对多关联关系。 首先,多对多关联在数据库设计中是指两个实体之间存在多个对应关系,...

    hibernate多对多双向关联

    总结来说,理解并能正确使用Hibernate中的多对多双向关联是Java开发中的重要技能,涉及到实体设计、映射配置、数据操作和性能优化等多个方面。通过学习提供的博客和相关代码示例,开发者可以深入掌握这一主题,并将...

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

    描述部分为空,但我们可以根据标题推测,这篇博客可能详细解释了如何在Hibernate中配置和管理这种一对多双向关联,包括XML配置、注解方式,以及如何在代码中进行操作和查询。 **Hibernate ORM简介** Hibernate是一...

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

    对于"hibernate双向一对多关联映射(注解版)",我们可以按照以下步骤进行: 1. **定义实体类**:首先,我们需要创建两个实体类,例如`Parent`和`Child`。在`Parent`类中,`Child`是一个集合,而在`Child`类中,`...

    hibernate一对多,多对一,一对多双向关联

    “Hibernate 一对多,多对一,一对多双向关联”是指在Java持久化框架Hibernate中,实体间常见的三种关联关系。在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户...

    hibernate双向一对多关联映射(XML)

    在上述配置中,`&lt;one-to-many&gt;`标签定义了`User`到`Order`的一对多关系,而`&lt;many-to-one&gt;`标签定义了`Order`到`User`的多对一关系。`inverse="true"`意味着`Order`端负责维护关系,即当删除一个`Order`时,其对应的...

    hibernate 双向多对多关联映射练习

    在Java的持久化框架Hibernate中,双向多对多关联映射是一种常见的数据关系模型,它允许两个实体类之间存在多个实例互相引用的情况。本练习旨在帮助开发者深入理解并熟练运用这种映射方式。通过以下详细讲解,我们将...

    hibernate双向多对多关联映射(XML)

    本知识点将深入探讨Hibernate中的双向多对多关联映射,并通过XML配置文件进行设置。 在关系型数据库中,多对多(Many-to-Many)关系是两个表之间的一种复杂关联,表示一个实体可以与多个其他实体相关联,反之亦然。...

    hibernate 双向 多对对,一对多,一对一 映射的 集合

    总结起来,Hibernate的双向多对多、一对多、一对一映射提供了灵活的数据关联方式,使得Java对象和数据库表之间的关系得以顺畅地转换和操作。理解并熟练掌握这些映射关系,对于开发高效、稳定的Java持久层代码至关...

    hibernate双向一对多增删查改的例子

    - `@ManyToOne`: 表示多对一的关系,`@JoinColumn` 定义了外键字段名,这里是 "student_id"。 **增删查改操作** 1. **增加**:创建一个新的学生和课程,然后将课程添加到学生的课程列表中,最后通过SessionFactory...

    Hibernate ORM - 多对多双向连接表关联关系

    本文将深入探讨Hibernate ORM中的一个关键概念——多对多双向连接表关联关系。这种关联关系在实际业务场景中非常常见,比如用户与角色、课程与学生等例子,都需要用到多对多的关系来描述它们之间的复杂联系。 首先...

    hibernate多对多

    二、Hibernate多对多配置 在Hibernate中,实现多对多关系映射主要通过以下几种方式: 1. **使用`@ManyToMany`注解**:在Java类的属性上添加`@ManyToMany`注解,指定与之关联的实体类以及关联的表字段。 2. **定义...

    Hibernate 系列教程 双向多对多

    本教程主要聚焦于Hibernate中的一个复杂关系类型——双向多对多关系。 双向多对多关系是两个实体类之间的一种关联,每个实体都可以拥有多个实例,同时每个实例也可以关联到多个其他实体。这种关系在现实生活中很...

    Hibernate ORM - 一对多双向连接表关联关系

    虽然描述部分为空,但根据标题,我们可以推断这篇文章可能详细介绍了如何在Hibernate中设置和管理一对多双向关联,包括配置XML映射文件、注解或者使用Java配置,以及如何在代码中处理这种关联关系。 **标签解析:**...

    Hibernate一对多(多对一)双向关联(annotation/xml)

    总之,理解和熟练运用Hibernate的一对多、多对一以及双向关联,是提升Java企业级应用开发效率的关键。通过注解或XML配置,开发者可以灵活地定义实体间的关联,实现数据的持久化。同时,注意级联操作、懒加载策略等...

    Hibernate的双向多对一

    【标题】:“Hibernate的双向多对一”关系详解 在Java开发中,尤其是在企业级应用中,数据库模型的映射是至关重要的。Hibernate作为一款强大的ORM(对象关系映射)框架,极大地简化了这一过程。本篇将深入探讨...

Global site tag (gtag.js) - Google Analytics