JPA级联-联接表中的ID不同时,删除不起作用

时间:2019-07-25 11:52:23

标签: postgresql spring-boot spring-mvc jpa spring-data-jpa

enter image description here

我正在使用spring JPA插入和删除这些表中的记录。我可以插入记录,但是由于emp_workstation表中的ID不同,因此无法删除。如果employee_id和workstation_id相同,则删除工作正常,但如果两个id不相同,则在employee表和emp_workstation表(级联已设置为“ ALL”)中不会发生删除。有没有人以前遇到过这个问题或知道如何解决这个问题?

Employee.java

 @Setter
    @Getter
    @Builder(toBuilder = true)
    @AllArgsConstructor(access = AccessLevel.PUBLIC)
    @NoArgsConstructor(access = AccessLevel.PUBLIC)
    @Entity
    @Table(name = "employee")
    public class Employee {
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sq_employee_id")
        @SequenceGenerator(name = "sq_employee_id", sequenceName = "sq_employee_id", allocationSize = 1)
        private Long id;

        @Column(name = "employee_name", length = 50)
        private String name;

          @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinTable(name = "emp_workstation", joinColumns = {
                @JoinColumn(name = "employee_id") }, inverseJoinColumns = { @JoinColumn(name = "workstation_id") })
        private Workstation workstation;
    }

Workstation.java

  @Setter
    @Getter
    @Builder(toBuilder = true)
    @AllArgsConstructor(access = AccessLevel.PUBLIC)
    @NoArgsConstructor(access = AccessLevel.PUBLIC)
    @Entity
    @Table(name = "workstation")
    public class Workstation {
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sq_workstation_id")
        @SequenceGenerator(name = "sq_workstation_id", sequenceName = "sq_workstation_id", allocationSize = 1)
        private Long id;

         @Column(name = "workstation_name", nullable = false, length = 100)
        private String name;

         @Column(name = "workstation_area", nullable = false, length = 100)
        private String name;

         @OneToOne(mappedBy = "workStation")
        private Employee employee;
        }

示例:在EMP_WORKSTATION表中,如果EMPLOYEE_ID和WORKSTATION_ID相同,则删除工作正常。但是,如果两个ID都不相同,则无法删除。

谢谢

0 个答案:

没有答案