`

hibernate 映射-多对多双向

阅读更多

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

 

 

分享到:
评论

相关推荐

    hibernate 映射-一对多双向

    4. **多对一关联(Many-to-One Association)**:在子类(被多个父项关联的一方)中,使用`@ManyToOne`注解来定义关联,表示多个实体可以与一个其他实体相关联。 5. **双向关联(Bidirectional Association)**:在...

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

    标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    Hibernate 一对一唯一外键关联映射详解 Hibernate是一种流行的Java持久层框架,提供了多种关联映射方式,其中一对一唯一外键关联映射是一种常见的关联方式。在本文中,我们将详细介绍Hibernate一对一唯一外键关联...

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

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

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

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

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

    在开发过程中,IDE如Eclipse或IntelliJ IDEA提供了对Hibernate的集成支持,包括代码生成、对象关系图显示以及自动配置检查,这使得关系映射的设置更加直观和便捷。 六、最佳实践 1. 选择合适的集合类型:根据业务...

    hibernate 映射关系学习入门 多对多实体映射

    本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...

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

    这个标题表明我们要讨论的是Hibernate ORM框架中的一种特定的数据关系映射——一对多双向组合关联。在关系型数据库中,一对多关联意味着一个父实体可以与多个子实体相对应,而双向则表示这种关系是相互的,即父实体...

    hibernate5--3.映射关系

    本文将深入探讨Hibernate5中的映射关系,主要包括多对多(Many-to-Many)和一对多(One-to-Many)这两种关系。 一、多对多映射(Many-to-Many) 多对多关系在数据库中表现为两个表之间存在多个连接记录,而在对象...

    Hibernate ORM - 多对多双向中间实体关联关系

    本文将深入探讨Hibernate ORM中的一个关键概念:多对多双向中间实体关联关系。这种关联关系在实际业务场景中非常常见,比如用户与角色、课程与学生之间的关联等。 首先,多对多关联意味着两个实体类之间存在多个...

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

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

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

    本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

    Hibernate_实体关联关系映射--学习总结

    实体关联关系映射涉及一对一、一对多、多对多等多种形式,而这些映射方式又可以分为单向和双向,依据使用的是主键还是外键,以及是否使用连接表。接下来,我们详细介绍这些知识点。 ###Hibernate实体关联关系映射...

    Hibernate从入门到精通(六)一对一双向关联映射 - 赵帅 廊坊师范学院信息技术提高班

    Hibernate从入门到精通(六)一对一双向关联映射 - 赵帅 廊坊师范学院信息技术提高班

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

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

    hibernate单向多对多映射(XML版)

    本主题聚焦于"hibernate单向多对多映射",特别是在XML配置文件中的实现。在这个过程中,我们将探讨多对多关系的原理,以及如何在Hibernate中通过XML配置文件来定义这种关系。 首先,我们需要理解多对多关系的概念。...

    hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了

    在本章中,我们将深入探讨Hibernate中的关联映射,包括一对多、多对一以及多对多的关系。这些映射关系对于理解如何在Java应用程序中有效地管理数据库对象至关重要。 首先,我们来解决描述中提到的问题。`...

Global site tag (gtag.js) - Google Analytics