阅读此文章需要有基础的jpa知识,此处不讲述entity、repository。
可以查看我之前的文章Spring Data Jpa 快速上手(一)使用spring data jpa 实现增删改查
1.建立表、实体类
讲述一下两个实体类的关系。
Customer为客户公司,linkMan为客户公司的联系人,一个公司有多个联系人(员工),所以Customer和linkMan是一对多的关系。用到了@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 = CascadeType.ALL, fetch = FetchType.LAZY

本文详细介绍了在Spring Data JPA中如何使用@ManyToOne和@OneToMany进行级联操作,包括级联删除、新增、更新。通过实例展示了实体类之间的关系,强调了放弃外键维护权利的重要性,并提供了相关的repository操作方法。同时,解释了对象导航查询的概念,帮助读者更好地理解和应用这些关系映射注解。
最低0.47元/天 解锁文章
1608

被折叠的 条评论
为什么被折叠?



