hibernate 映射-多对多双向

简介:

hibernate 中的多对多,在数据库中就是一张中间表,

范例:

考试与考试之间是一种多对多的关系:

(1)一个考生可以参加多场考试;

(2)一场考试可以有多个考生参加;

(3)不同的考生可以参加同一场考试;不同的考试可以有相同的考生。

考生类:User,中有成员变量private List<Exam> exams 

考试类:Exam,中有成员变量 private List<User> users

在User.Java 中的配置:

Java代码   收藏代码
  1. @ManyToMany  
  2.     @JoinTable(name = "t_user_exam", joinColumns =  
  3.     { @JoinColumn(name = "user_id") }, inverseJoinColumns =  
  4.     { @JoinColumn(name = "exam_id") })  
  5.     public List<Exam> getExams()  
  6.     {  
  7.         return exams;  
  8.     }  

 在Exam.java 中要配置:

Java代码   收藏代码
  1. @ManyToMany(mappedBy = "exams")  
  2. public List<User> getUsers()  
  3.     {  
  4.         return users;  
  5.     }  

 

创建的中间表的名称是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

 

相关文章
|
1月前
|
Java 数据库连接 数据库
hibernate多对多、正向工程创建数据表——访问温馨提示
hibernate多对多、正向工程创建数据表——访问温馨提示
|
11月前
|
SQL XML 存储
Hibernate框架【五】——基本映射——多对多映射
Hibernate框架【五】——基本映射——多对多映射
140 0
|
1月前
|
Java 数据库连接 数据库
Hibernate5中实体映射命名策略
Hibernate5中实体映射命名策略
66 0
|
1月前
|
SQL 存储 Java
Hibernate - 继承关联关系映射
Hibernate - 继承关联关系映射
47 0
|
1月前
|
机器学习/深度学习 SQL Java
Hibernate - 多对多关联关系映射
Hibernate - 多对多关联关系映射
43 0
|
Java 数据库连接 数据库
hibernate多对多、正向工程创建数据表——访问温馨提示
hibernate多对多、正向工程创建数据表——访问温馨提示
|
Java 数据库连接
mybatis-plus和hibernate 忽略映射字段
mybatis-plus和hibernate 忽略映射字段
258 1
|
XML Java 数据库连接
《Hibernate上课笔记》----class4----Hibernate继承关系映射实现详解
《Hibernate上课笔记》----class4----Hibernate继承关系映射实现详解
76 0
《Hibernate上课笔记》----class4----Hibernate继承关系映射实现详解
|
XML Java 数据库连接
《Hibernate上课笔记》-----class7----Hibernate实现多对多关联映射
《Hibernate上课笔记》-----class7----Hibernate实现多对多关联映射
74 0
《Hibernate上课笔记》-----class7----Hibernate实现多对多关联映射
|
存储 SQL Java
hibernate学习笔记之二(映射关系与懒加载)
hibernate学习笔记之二(映射关系与懒加载)
hibernate学习笔记之二(映射关系与懒加载)