Java Spring数据JPA从多对多关系删除问题

Java Spring数据JPA从多对多关系删除问题,java,spring,spring-data-jpa,Java,Spring,Spring Data Jpa,在我的项目中,我使用Spring数据jpa。我有多对多关系的表格。我的实体: @Entity @Table(name = "SPEC") public class SpecJpa { @Id private int id; @Column(name = "NAME") private String name; @OneToOne(cascade = CascadeType.ALL, fetch

在我的项目中,我使用Spring数据jpa。我有多对多关系的表格。我的实体:

    @Entity
    @Table(name = "SPEC")
    public class SpecJpa {
        @Id
        private int id;
        @Column(name = "NAME")
        private String name;
        @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
        @JoinColumn(name = "Creator_ID", unique = false, nullable = false, updatable = true)
        private UsersJpa usersJpa;
        @Column(name = "DESCRIPTION")
        private String description;


        @ManyToMany(fetch = FetchType.EAGER)
        @JoinTable(name="SPEC_PARTS",
                joinColumns = @JoinColumn(name="ID_PARTS", referencedColumnName="id"),
                inverseJoinColumns = @JoinColumn(name="ID_SPEC", referencedColumnName="id")
        )
    private Set<PartsJpa> partsJpa;
    //---------------
但我有一个例外:

差异完整性约束冲突: “FK9Y4MKICYBLJWPENACP4298I49:PUBLIC.PARTS外键(ID_导出) 参考公共出口(ID)(1)”;SQL语句:/*删除 com.aleksandr0412.demo.entitiesjpa.ExportJpa/delete from EXPORT 其中id=?[23503-200]],SQL:/delete com.aleksandr0412.demo.entitiesjpa.ExportJpa*/delete from EXPORT 其中id=?2020-05-2519:16:31.13387---[nio-8080-exec-4] o、 h.engine.jdbc.spi.SqlExceptionHelper:SQL错误:23503,SQLState: 23503


在这个实体的数据库中,我有3个表:零件、等级库和等级库零件。据我所知,要解决这个问题,我首先应该删除表spec_parts中的行,然后可以从表parts中删除行。如何执行此操作?

在您的
零件服务
实现中,我建议您首先使用控制器中给定的
id
获取要删除的
(即零件JPA)
。 接下来将其specJpa设置为
null
emptySet
,然后调用delete方法

为此,请确保方法
setSpecJpa(SpecJpa SpecJpa)
setPartJpa(PartJpa PartJpa)
正确实现

我希望这对你有帮助

@Entity
@Table(name = "PARTS")
public class PartsJpa {
    @Id
    private int id;
    @Column(name = "NAME")
    private String name;
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "ID_EXPORT", unique = false, nullable = false, updatable = true)
    private ExportJpa exportJpa;
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "ID_TYPE", unique = false, nullable = false, updatable = true)
    private TypesJpa typesJpa;

    @Column(name = "DESCRIPTION")
    private String description;

    @ManyToMany(fetch = FetchType.EAGER)

    private Set<SpecJpa> specJpa;
@PostMapping("deletePart")
public String deletePart(@RequestParam String id, Model model) {
    partsService.deleteById(Integer.parseInt(id));
    return "redirect:/parts";

}