Spring Boot学习笔记(五)Spring Data Jpa 快速上手(四)多对一@ManyToOne、一对多@OneToMany,以及级联操作

阅读此文章需要有基础的jpa知识,此处不讲述entity、repository。
可以查看我之前的文章Spring Data Jpa 快速上手(一)使用spring data jpa 实现增删改查

1.建立表、实体类

讲述一下两个实体类的关系。
Customer为客户公司,linkMan为客户公司的联系人,一个公司有多个联系人(员工),所以CustomerlinkMan是一对多的关系。用到了@ManyToOne、@OneToMany、JoinColumn注解

@ManyToOne@OneToMany顾名思义,是一对多和多对一,
@JoinColumn作用:用于定义主键字段和外键字段的对应关系。有以下属性:

  • name:指定外键字段的名称
  • referencedColumnName:指定引用主表的主键字段名称
  • unique:是否唯一。默认值不唯一
  • nullable:是否允许为空。默认值允许
  • insertable:是否允许插入。默认值允许
  • updatable:是否允许更新。默认值允许
  • columnDefinition:列的定义信息

下面是Customer的表与实体类
在这里插入图片描述

@Entity
@Table(name = "cst_customer")
@Data
public class Customer {
   

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "cust_id")
    private Integer custId;
    @Column(name = "cust_address")
    private String custAddress;
    @Column(name = "cust_industry")
    private String custIndustry;
    @Column(name = "cust_level")
    private String custLevel;
    @Column(name = "cust_name")
    private String custName;
    @Column(name = "cust_phone")
    private String custPhone;
    @Column(name = "cust_source")
    private String custSource;

  声明关系
  配置外键(中间表)
//    @OneToMany(targetEntity = LinkMan.class)
    从表的外键名称、以及其所对应的主表的名称,若没有放弃外键维护权,则在新增用户的时候,会在lkm_cust_id修改对应的联系人信息(为联系人添加外键)
//    @JoinColumn(name = "lkm_cust_id", referencedColumnName = "cust_id")
//    private Set<LinkMan> linkMans = new HashSet<>();

//    声明关系,mappedBy 放弃外键维护权,mappedBy是对方配置关系的属性名称
//    cascade 级联操作,允许增删改查或全部允许(ALL),加了此代码后,才可被维护
//    fetch = FetchType.LAZY,设置关联对象为立即加载,默认为懒加载(要用的时候再查,推荐懒加载)
    @OneToMany(mappedBy = "customer", cascade = C
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值