【问题标题】:Cascade type in Spring bootSpring boot 中的级联类型
【发布时间】:2021-06-15 23:56:36
【问题描述】:

我是 Spring Boot 的新手。 我想知道在这种情况下我必须使用哪种级联类型。

我有一个Employee类和一个Department

许多员工可以在一个部门工作(所以我猜这是一个@ManyToOne 关系),一个部门可以有一个或多个员工(所以它是一个**@OneToMany)。

我想对 Employee 类执行一些编辑,这些编辑必须传播到另一个依赖项。 但是如果我删除一个员工,我就不能删除整个部门,所以我只能删除那个员工。

@Entity
public class Department
{
  @Column(nullable = false)
  private String name;
  @Id
  private String code;
  @Column(nullable = false)
  private String address;
  @Column(unique = true, nullable = false)
  private String website;
  @Column(unique = true, nullable = false)
  private String cellNumber;


  @JsonIgnore
  @OneToMany(mappedBy = "department")
  private Set<Employee> emplpoyee;
  
  //constructors, getters and setters
}

这是 Employee

public class Employee
{
  @Id
  private String SSN;
  @Column(nullable = false)
  private String name;

  @Column(nullable = false)
  private String lastname;

  @Column(nullable = false)
  private String username;

  @Column(nullable = false)
  private String gender;

  @Column(unique = true, nullable = false)
  private String email;

  @Column(nullable = false)
  private String password;

  @Column(nullable = false)
  private String role;

  @ManyToOne(cascade = CascadeType.???, fetch = FetchType.LAZY)
  @JoinTable(
        name = "employee_works_in_dept",
        joinColumns = {@JoinColumn(name = "employee_SSN")},
        inverseJoinColumns = {@JoinColumn(name = "dept_code")}
)
private Department department;
}

我必须用什么来代替??

我尝试使用 CascadeType.ALL,但它也删除了整个部门

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    首先,如果您的Employee 只能是一个部门 的一部分,我认为您不需要单独的联接表。 如果您的员工可以在多个部门工作,那么这是多对多关系。

    在考虑您的问题时,您可以简单地删除您的 CascadeTypeEmployee 类中不需要它。

    如果您需要在Department被删除时删除一个Department下的所有员工,那么您只需将您的CascadeType.ALL添加到部门方面。

    这里有一个更好的答案。 What is the meaning of the CascadeType.ALL for a @ManyToOne JPA association

    【讨论】:

    • 你可能是对的!顺便说一句,如果一个部门可能会被删除,我还想在 Employee 的部门字段中简单地放置一个简单的 NULL 值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多