JPA#ManyToMany
多对多,多个学生选了多个课程。
涉及到的注解(注解的使用看注释):
ManyToMany
JoinTable
JsonIgnoreProperties
@Entity
@Table(name = "t_student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id; @Column(name = "name")
private String name; /**
* 多对多映射关系中,需要一个中间表记录这种多对多的关系。
*
* 中间表通过JoinTable.name定义中间表,表名称。
* 通过JoinTable.joinColumns定义一方的主键
* 通过JoinTable.inverseJoincolumns定义另一方的主键
*
*
* 在多对多的映射关系中,忽略某些字段的json序列化尤其特别重要,
* 否则就会产生大量的冗余数据。
* JsonIgnoreProperties注解,只会对被注解的属性的直接字段起作用,
* 比如下面的@JsonIgnoreProperties({"students"})作用于courses,
* 就会给course里面每一个course的students属性过滤掉,理解这一点显得尤其特别重要。
*
* -----------------------------------------------------------------------------------
* 补充:
* 1.joinColumns用于定义当前表主键在关系表中的外键
* 2.inverseJoinColumns用于定义对方表的主键在关系表中的外键
* 3.多对多映射中对方表的字段,不用也写上JoinTable注解,只需要在ManyToMany注解中加入mappedBy并指定合适的值就行了
*/
@ManyToMany
@JoinTable(
name="t_course_student",
joinColumns= {@JoinColumn(name="student_id")},
inverseJoinColumns= {@JoinColumn(name="course_id")}
)
@JsonIgnoreProperties({"students"})
private Set<Course> courses;
}
@Entity
@Table(name="t_course")
public class Course {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private Integer id; @Column(name="name")
private String name; // 第一种写法
// @ManyToMany
// @JoinTable(
// name="t_course_student",
// joinColumns= {@JoinColumn(name="course_id",referencedColumnName="id")},
// inverseJoinColumns= {@JoinColumn(name="student_id")}
//
// )
// @JsonIgnoreProperties({"courses","classroom"}) // 第二种写法
@ManyToMany(mappedBy="courses")
@JsonIgnoreProperties({"courses","classroom"})
private Set<Student> students;
}
——
JPA#ManyToMany的更多相关文章
- spring jpa ManyToMany 理解和使用
1.java和jpa 中所有的关系都是单向的.这个关系数据库不同,关系数据库,通过外键定义并查询,使得反向查询总是存在的. 2.JPA还定义了一个OneToMany关系,它与ManyToMany关系类 ...
- JPA多对多@manytomany注解配置实例
维护端注解 @ManyToMany (cascade = CascadeType.REFRESH) @JoinTable (//关联表 name = "student_teacher&quo ...
- JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析
JPA实体关系映射:@ManyToMany多对多关系.@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析 今天程序中遇到的错误一 org.hibernate.A ...
- Spring boot data JPA数据库映射关系 : @OneToOne,@OneToMany,@ManyToMany
问题描述 在利用Spring boot data JPA进行表设计的时候,表对象之间经常存在各种映射关系,如何正确将理解的映射关系转化为代码中的映射关系是关键之处. 解决办法 概念理解 举例:在公司的 ...
- spring data jpa 多对多 ManyToMany
环境搭建 源码地址:gitee:https://gitee.com/ytfs-dtx/JPA 导入依赖 <properties> <spring.version>5.2.5.R ...
- Hibernate,JPA注解@ManyToMany
@ManyToMany默认处理机制,当双向多对多关联中没有定义任何物理映射时, Hibernate根据以下规则生成相应的值: 关联表名: 主表表名+_下划线+从表表名: 关联到主表的外键名:从表用于关 ...
- JPA关系映射之many-to-many
@ManyToMany Board表实体类 @Entity @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Table(nam ...
- JPA中关联关系(OneToOne、OneToMany、ManyToMany,ManyToOne)映射代码片段
在使用Hibernate的时候我们常常会在类里边配置各种的关联关系,但是这个并不是很好配置,配置不当会出现各种各样的问题,下面具体来看一下: 首先我们来看User类里边有一个IdentityCard类 ...
- JPA笔记4 ManyToMany
package many_to_many; import java.util.HashSet; import java.util.Set; import javax.persistence.Entit ...
随机推荐
- luogu P2754 [CTSC1999]家园
本题是分层图最大流问题,相当于按时间拆点,每个当前点向下一点的下一时间层连点,每一层有n+1个点 #include<bits/stdc++.h> using namespace std; ...
- JavaScript数组用法
本文介绍一些js数组的用法: 上图的要点为: 1.unshift增加数组头部的元素,shift删除数组头部的元素. 2.delete除可删除对象的属性外,还可以删除数组的元素,使其占位变为undefi ...
- LLDB常用指令
1.help:列举所有的命令,也可以用于查询某个命令的说明,比如,help print,help help 2.print:打印,简写为,prin,pri,p,打印的结果比如,$10代表时该结果, ...
- Python 中的经典类新式类
Python 中的经典类新式类 要知道经典类和新式类的区别,首先要掌握类的继承 类的继承的一个优点就是减少代码冗余 广度优先和深度优先,这主要是在多类继承的时候会使用到 经典类和新式类的主要区别就是类 ...
- Linux CentOS7 VMware 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库
一.安装软件包的三种方法 Linux下游三种安装方法,rpm工具.yum工具.源码包.rpm按装一个程序包时,有可能因为该程序包依赖另一个程序包而无法安装:yum工具,可以连同依赖的程序包一起安装. ...
- Day3-P - Matrix POJ3685
Given a N × N matrix A, whose element in the i-th row and j-th column Aij is an number that equals i ...
- 099、Java中String类之字符数组与字符串的转换
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 前端学习笔记系列一:1.export default / export const
export default 是默认导出 export const 是命名导出 参考:Javascript (ES6), export const vs export default(基本上就是翻译这 ...
- 三级联动下拉列表——php 、Ajax
主页面:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...
- php注册与登录
一.注册 1.注册界面 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...