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 ...
随机推荐
- sql数据库的基本操作
命令行 1.显示当前数据库服务器中的数据库列表:mysql> SHOW DATABASES;2.建立数据库:mysql> CREATE DATABASE 库名;3.建立数据表:mysql& ...
- SpringBoot项目中自定义注解的使用
1.定义注解接口 @Documented @Retention(RUNTIME) @Target(METHOD) public @interface MyLog { String value() ...
- YARN 集群的资源分配
YARN 集群在分配任务时,存在两种方式 1. DefaultResourceCalculator,只考虑内存(memory),每个 container 的 cpu 资源都分配 1 个. 2. Dom ...
- MVC PartialView使用
https://blog.csdn.net/mss359681091/article/details/51181037
- 【快学SpringBoot】过滤XSS脚本攻击(包括json格式)
若图片查看异常,请前往掘金查看:https://juejin.im/post/5d079e555188251ad81a28d9 XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cas ...
- springboot打包的问题可执行jar和不可执行jar
具体解释可以参看:https://www.cnblogs.com/liaojie970/p/9007577.html 如果只是想要依赖那么可以将springboot自带的打包插件换掉就可以了,换为如下 ...
- stm32 解析sbus
转载 https://blog.csdn.net/Brendon_Tan/article/details/89854751 STM32 Futaba SBUS协议解析1. S.BUS1.1 协议介绍 ...
- 解题报告:SP1043 GSS1
题目链接:SP1043 GSS1 - Can you answer these queries I 对,\(GSS\)毒瘤数据结构题,就是我在这篇文章中提到的紫题. 相对其他\(GSS\)题简单些,但 ...
- redis、mongodb、memcache安装好后设置开机自启动
vim /etc/rc.d/rc.local /usr/local/mongodb/bin/mongod --smallfiles /usr/local/bin/redis-server/usr/lo ...
- 大数据萌新的Python学习之路(二)
笔记内容: 一.模块 Python越来越被广大程序员使用,越来越火爆的原因是因为Python有非常丰富和强大标准库和第三方库,几乎可以实现你所想要实现的任何功能,并且都有相应的Python库支持,比如 ...