多对多,多个学生选了多个课程。


涉及到的注解(注解的使用看注释):
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的更多相关文章

  1. spring jpa ManyToMany 理解和使用

    1.java和jpa 中所有的关系都是单向的.这个关系数据库不同,关系数据库,通过外键定义并查询,使得反向查询总是存在的. 2.JPA还定义了一个OneToMany关系,它与ManyToMany关系类 ...

  2. JPA多对多@manytomany注解配置实例

    维护端注解 @ManyToMany (cascade = CascadeType.REFRESH) @JoinTable (//关联表 name = "student_teacher&quo ...

  3. JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析

    JPA实体关系映射:@ManyToMany多对多关系.@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析 今天程序中遇到的错误一 org.hibernate.A ...

  4. Spring boot data JPA数据库映射关系 : @OneToOne,@OneToMany,@ManyToMany

    问题描述 在利用Spring boot data JPA进行表设计的时候,表对象之间经常存在各种映射关系,如何正确将理解的映射关系转化为代码中的映射关系是关键之处. 解决办法 概念理解 举例:在公司的 ...

  5. spring data jpa 多对多 ManyToMany

    环境搭建 源码地址:gitee:https://gitee.com/ytfs-dtx/JPA 导入依赖 <properties> <spring.version>5.2.5.R ...

  6. Hibernate,JPA注解@ManyToMany

    @ManyToMany默认处理机制,当双向多对多关联中没有定义任何物理映射时, Hibernate根据以下规则生成相应的值: 关联表名: 主表表名+_下划线+从表表名: 关联到主表的外键名:从表用于关 ...

  7. JPA关系映射之many-to-many

    @ManyToMany Board表实体类 @Entity @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Table(nam ...

  8. JPA中关联关系(OneToOne、OneToMany、ManyToMany,ManyToOne)映射代码片段

    在使用Hibernate的时候我们常常会在类里边配置各种的关联关系,但是这个并不是很好配置,配置不当会出现各种各样的问题,下面具体来看一下: 首先我们来看User类里边有一个IdentityCard类 ...

  9. JPA笔记4 ManyToMany

    package many_to_many; import java.util.HashSet; import java.util.Set; import javax.persistence.Entit ...

随机推荐

  1. redhat 7.6 rpm ,yum ,编译安装

    rpm rpm  -ivh  包名  //安装 rpm  -e     包名   //卸载 which mount  查看命令安装目录 rpm  -qf    /usr/bin/mount    // ...

  2. Tensorflow机器学习入门——网络可视化TensorBoard

    一.在代码中标记要显示的各种量 tensorboard各函数的作用和用法请参考:https://www.cnblogs.com/lyc-seu/p/8647792.html import tensor ...

  3. 算法设计与分析 - 李春葆 - 第二版 - pdf->word v1

    章─概论 练习题 . 下列关于算法的说法中正确的有( ).Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊Ⅳ.算法执行后一定产 ...

  4. DateTime.Now.ToFileTime

    var s = System.DateTime.Now.ToFileTime().ToString(); DateTime.Now.ToFileTime() 可以获得当前时间的长整型数字,这个数字应该 ...

  5. UITextField的使用、介绍、讲解、全解、简介、说明

    [2018年中秋节良心写作]文章将尽可能的全面介绍UITextField的所有相关知识,逻辑连贯,需要认真理解,一气呵成. 关键词: 屏幕键盘(onscreen keyboard).键盘自定义.键盘类 ...

  6. 「JLOI2015」战争调度

    题目 [内存限制:256 MiB][时间限制:1000 ms] [标准输入输出][题目类型:传统][评测方式:文本比较] 题目描述 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有 ...

  7. 吴裕雄--天生自然JAVAIO操作学习笔记:投票程序

    public class ExecDemo{ public static void main(String args[]){ new Operate() ; } }; import java.io.B ...

  8. ADO.NET基础必背知识

    DO.NET 由.Net Framework 数据提供程序和DataSet 两部分构成. .NET FrameWork 是 Connection  连接对象 Command   命令对象 DataRe ...

  9. 、第1节 kafka消息队列:8、9、kafka的配置文件server.properties的说明

    10.kafka的配置文件说明 Server.properties配置文件说明 #broker的全局唯一编号,不能重复 broker.id=0 #用来监听链接的端口,producer或consumer ...

  10. 二、java基础-运算符_控制语句_break_continue_return

    1.运算符 1)算术运算符:6个+ — * \ % ++  --2)关系运算符:6个>  >=  <  <=   ==   !=3)布尔运算符&&并且  ||或 ...