`
默翁1
  • 浏览: 26723 次
社区版块
存档分类
最新评论

多对多关系映射(many-to-many)

阅读更多

例子阐述:一个用户有多个角色,一个角色可以由多个用户扮演

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();
	}

 

0
1
分享到:
评论

相关推荐

    Hibernate one-to-many / many-to-one关系映射

    "Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...

    hibernate many-to-many级联保存,级联更新,级联删除

    在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门课程,而一门课程也可以被多名学生选修。在Hibernate中,这种关系通过中间关联表(也称为连接表或联合表)来实现,该...

    (4)Hibernate中的many-to-one和one-to-many关系

    本话题主要探讨两种基本的关系映射类型:many-to-one(多对一)和one-to-many(一对多)。这两种关系映射是数据库中常见的关联类型,理解和掌握它们对于开发高质量的Java应用至关重要。 1. many-to-one关系 many-to...

    Many-to-one关联映射

    关联映射的本质: 将关联关系映射到数据库,所谓的...&lt;many-to-one&gt;会在多的一端加入一个外键,指向一的一端,这个外键是由&lt;many-to-one&gt; 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致

    hibernate many-to-one(多对一)及 cascade(级联).doc

    其中,`many-to-one`(多对一)关系是较为常见的一种,它指的是一个实体可以对应另一个实体中的多个实例。 #### 代码示例解析 在提供的代码示例中,定义了两个实体类:`User` 和 `Group`,其中 `User` 与 `Group` ...

    多对多的关联映射--基于SSH开发

    在Hibernate框架中,多对多关系通过`&lt;many-to-many&gt;`标签来配置。它需要指定两个属性:`entity-name`表示关联的实体类,以及`table`定义用来存储关联关系的中间表(如果需要自定义的话)。例如: ```xml &lt;many-to-...

    NHibernate One-to-Many一对多映射-xxlinux_com

    在数据库世界中,一对多(One-to-Many)关系是一种常见的关联类型,其中一个表(父表)可以与多个其他表(子表)相关联。在NHibernate中,配置这种映射关系对于理解和使用ORM至关重要。 一对多关系意味着一个实体...

    Hibernate Mapping Many-to-One 实例 内附源代码及附件下载

    本实例将详细讲解如何在Hibernate中实现Many-to-One关系映射,这是一种常见的数据库关联,表示一个实体可以与多个其他实体相关联。 在Many-to-One关系中,通常一个实体(如部门)可以有多个相关实体(如员工),而...

    Hibernate Many-To-Many Mapping Annotations

    在Java的持久化框架Hibernate中,Many-to-Many映射是一种常见的关系模型,它用于表示两个实体类之间多对多的关系。在这个主题中,我们将深入探讨如何使用注解来实现这种映射,以及其背后的数据库原理和实际应用。 ...

    Hibernate实现many-to-many的映射关系

    在本文中,我们将深入探讨如何使用Hibernate来实现多对多(many-to-many)的映射关系。 首先,多对多映射关系通常涉及到两个实体类之间的关联,例如在学生选课的例子中,学生(Student)和课程(Course)之间存在多...

    Many-To-Many_Element.rar_hibernate 多对多

    在现实世界的数据模型中,很多情况下存在多对多(Many-to-Many)的关系,例如学生与课程的关系,用户与角色的关系等。本教程主要讲解如何使用Hibernate来处理多对多的关联映射,尤其是基于HashMap的实现方式。 首先...

    10 映射-- 多对多(老师与学生)

    在Hibernate中,实现多对多映射主要通过`&lt;many-to-many&gt;`标签。下面我们将详细介绍如何配置和使用这个标签。 1. **配置映射文件**: 在Hibernate的XML映射文件中,我们需要为老师和学生类分别创建对应的.hbm.xml...

    Hibernate集合关系映射及one-one,one-many,many-many示例(带注释)

    本程序包含: hibenate 上传图片,二进制数据,大文本,集合映射的多种关系,onetoone,ontomany,manytomany等关系详细代码示例以及注释,全部由本人测试通过,对理解hibernate配置有极大帮助。

    Hibernate应用例子many-to-many

    本示例将详细讲解如何在Hibernate中实现多对多(many-to-many)的关系映射。 在数据库设计中,多对多关系是指两个实体之间存在多个关联,比如学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个...

    Hibernate many-to-many

    "Hibernate many-to-many"指的是Hibernate中处理多对多关联关系的一种方式。多对多关系是两个实体类之间存在的一种复杂关联,比如学生和课程之间的关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。 ...

    hibernate的关联映射

    关联映射主要包括四种类型:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。下面我们将逐一探讨这些关联映射的配置方法。 1. **一对一关联映射** - **主键关联**...

    Hibernate Tutorial 04 (Many-to-one and One-to-one Association

    #### 一、多对一关联(Many-to-One) 在本章中,我们将探讨如何在 Hibernate 中处理多对一关联。这种关联类型非常常见,在许多应用中都会遇到。例如,在一个在线书店应用中,每本书都与一个出版商关联,而一个出版...

    映射多对多及一对一关系

    - `&lt;many-to-one&gt;`元素表示多对一关系。 - `property-ref`属性指定了引用的属性。 通过以上示例可以看出,Hibernate提供了灵活的方式处理实体间的多对多和一对一关系。开发者可以根据实际需求选择合适的方式来...

    8 映射-- 一对多(部门对员工)

    标题中的“8 映射-- 一对多(部门对员工)”指的是在数据库设计和对象关系映射(ORM)中常见的关系类型,特别是使用Hibernate框架时的处理方式。在这个场景中,“部门”与“员工”之间存在一对多的关系,即一个部门...

Global site tag (gtag.js) - Google Analytics