hibernate 中的多对多,在数据库中就是一张中间表,
范例:
考试与考试之间是一种多对多的关系:
(1)一个考生可以参加多场考试;
(2)一场考试可以有多个考生参加;
(3)不同的考生可以参加同一场考试;不同的考试可以有相同的考生。
考生类:User,中有成员变量private List<Exam> exams
考试类:Exam,中有成员变量 private List<User> users
在User.java 中的配置:
@ManyToMany @JoinTable(name = "t_user_exam", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "exam_id") }) public List<Exam> getExams() { return exams; }
在Exam.java 中要配置:
@ManyToMany(mappedBy = "exams") public List<User> getUsers() { return users; }
创建的中间表的名称是t_user_exam,其中user_id是参考考生id的外键;exam_id是参考考试id的外键。
sql语句:
15:24:37,390 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:377 -
create table t_user_exam (
user_id integer not null,
exam_id integer not null
)
15:24:37,453 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:377 -
alter table t_user_exam
add index FK331826084DE43CAB (exam_id),
add constraint FK331826084DE43CAB
foreign key (exam_id)
references Exam (id)
15:24:37,609 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:377 -
alter table t_user_exam
add index FK3318260894018D2B (user_id),
add constraint FK3318260894018D2B
foreign key (user_id)
references User (id)
单向与双向的区别:
(1)单向,只能从一方导航到另一方,不能反之;即只能从A导航到B,而不能从B导航到A;
双向,可以从一方导航到另一方,反之亦然;即既可以从A导航到B,也可以从B导航到A;
(2)单向,只需要配置导航始发地的类;
双向,两个类都需要配置。
注意:
(1)成员变量名称中最好不要有下划线;
(2)成员变量的类型中不要有ArrayList,应该用List 或Set
相关推荐
4. **多对一关联(Many-to-One Association)**:在子类(被多个父项关联的一方)中,使用`@ManyToOne`注解来定义关联,表示多个实体可以与一个其他实体相关联。 5. **双向关联(Bidirectional Association)**:在...
标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...
Hibernate 一对一唯一外键关联映射详解 Hibernate是一种流行的Java持久层框架,提供了多种关联映射方式,其中一对一唯一外键关联映射是一种常见的关联方式。在本文中,我们将详细介绍Hibernate一对一唯一外键关联...
本文将深入探讨Hibernate ORM中的一个关键概念——多对多双向连接表关联关系。这种关联关系在实际业务场景中非常常见,比如用户与角色、课程与学生等例子,都需要用到多对多的关系来描述它们之间的复杂联系。 首先...
虽然描述部分为空,但根据标题,我们可以推断这篇文章可能详细介绍了如何在Hibernate中设置和管理一对多双向关联,包括配置XML映射文件、注解或者使用Java配置,以及如何在代码中处理这种关联关系。 **标签解析:**...
在开发过程中,IDE如Eclipse或IntelliJ IDEA提供了对Hibernate的集成支持,包括代码生成、对象关系图显示以及自动配置检查,这使得关系映射的设置更加直观和便捷。 六、最佳实践 1. 选择合适的集合类型:根据业务...
本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...
这个标题表明我们要讨论的是Hibernate ORM框架中的一种特定的数据关系映射——一对多双向组合关联。在关系型数据库中,一对多关联意味着一个父实体可以与多个子实体相对应,而双向则表示这种关系是相互的,即父实体...
本文将深入探讨Hibernate5中的映射关系,主要包括多对多(Many-to-Many)和一对多(One-to-Many)这两种关系。 一、多对多映射(Many-to-Many) 多对多关系在数据库中表现为两个表之间存在多个连接记录,而在对象...
本文将深入探讨Hibernate ORM中的一个关键概念:多对多双向中间实体关联关系。这种关联关系在实际业务场景中非常常见,比如用户与角色、课程与学生之间的关联等。 首先,多对多关联意味着两个实体类之间存在多个...
在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将深入探讨如何使用Hibernate的注解配置来处理数据库中的双向多对多关联关系。 首先,多对多关联在数据库设计中是指两个实体之间存在多个对应关系,...
本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
实体关联关系映射涉及一对一、一对多、多对多等多种形式,而这些映射方式又可以分为单向和双向,依据使用的是主键还是外键,以及是否使用连接表。接下来,我们详细介绍这些知识点。 ###Hibernate实体关联关系映射...
Hibernate从入门到精通(六)一对一双向关联映射 - 赵帅 廊坊师范学院信息技术提高班
本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...
本主题聚焦于"hibernate单向多对多映射",特别是在XML配置文件中的实现。在这个过程中,我们将探讨多对多关系的原理,以及如何在Hibernate中通过XML配置文件来定义这种关系。 首先,我们需要理解多对多关系的概念。...
在本章中,我们将深入探讨Hibernate中的关联映射,包括一对多、多对一以及多对多的关系。这些映射关系对于理解如何在Java应用程序中有效地管理数据库对象至关重要。 首先,我们来解决描述中提到的问题。`...