簡體   English   中英

無法刪除或更新父行 外鍵約束失敗 JPA Spring 引導

[英]Cannot delete or update a parent row a foreign key constraint fails JPA Spring Boot

我有一個與 2 個表相關的請求表,我根據請求類型保存請求編號,這些請求可以是水分析請求和土壤分析請求,但是當我嘗試刪除或更新請求表時,我收到錯誤

Cannot delete or update a parent row: a foreign key constraint fails

我實現關系的代碼如下

//請求類

@Entity
@Table(name = "solicitud")
public class Solicitud implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    
    //@Column(unique=true)
    //private String codigo;
    
    @ManyToOne(fetch = FetchType.LAZY)
    private Estado estado;
    
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Temporal(TemporalType.DATE)
    @NotNull
    @Column(name="fecha")
    private Date fecha;
    
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    private Usuario usuario;
    
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    private Usuario teclab;
    
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    private TipoMuestra tmuestra;
    
    
    
    //@Min(value = 0L, message = "Debe ingresar un valor positivo")
    //@Pattern(regexp = "[\\s]*[0-9]*[1-9]+",message="msg")
    @NotNull
    private Integer numMuestras;
    
    int year = 0;
    
    
    
    public Long getId() {
        return id;
    }



    public void setId(Long id) {
        this.id = id;
    }



    public Estado getEstado() {
        return estado;
    }



    public void setEstado(Estado estado) {
        this.estado = estado;
    }



    public Date getFecha() {
        return fecha;
    }



    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }
    
    


    public Usuario getUsuario() {
        return usuario;
    }



    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }




    public TipoMuestra getTmuestra() {
        return tmuestra;
    }



    public void setTmuestra(TipoMuestra tmuestra) {
        this.tmuestra = tmuestra;
    }
    
    public Integer getNumMuestras() {
        return numMuestras;
    }



    public void setNumMuestras(Integer numMuestras) {
        this.numMuestras = numMuestras;
    }




    public Usuario getTeclab() {
        return teclab;
    }



    public void setTeclab(Usuario teclab) {
        this.teclab = teclab;
    }
    
    





    /*@PostPersist
    public void generateCode() {
        CodigoAgua agua=new CodigoAgua();
        agua.setSolicitud(this);
        agua.generateCode();
    }*/






    /**
     * 
     */
    private static final long serialVersionUID = 1L;

}

//用於類型請求水分析的保存編號類

@Entity
@Table(name = "cagua")
public class CodigoAgua implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(unique=true)
    private String codigo;
    
    @OneToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="solicitud_id")
    private Solicitud solicitud;
    
    int year = 0;
    
    
    
    public Long getId() {
        return id;
    }

    

    public void setId(Long id) {
        this.id = id;
    }



    public String getCodigo() {
        return codigo;
    }



    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }



    public Solicitud getSolicitud() {
        return solicitud;
    }



    public void setSolicitud(Solicitud solicitud) {
        this.solicitud = solicitud;
    }
    @PostPersist
    public void generateCode() {
        Date date = new Date();
        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
          year = localDate.getYear();
          
        this.codigo=year +" - "+id+" - A";
        System.out.println("Codigo solicitud creado"+id+this.getSolicitud().getId());
    }

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

}

//用於類型請求土壤分析的保存編號類

@Entity
@Table(name = "csuelo")
public class CodigoSuelo implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(unique=true)
    private String codigo;
    
    @OneToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="solicitud_id")
    private Solicitud solicitud;
    
    int year = 0;
    
    
    
    
    public Long getId() {
        return id;
    }




    public void setId(Long id) {
        this.id = id;
    }




    public String getCodigo() {
        return codigo;
    }




    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }




    public Solicitud getSolicitud() {
        return solicitud;
    }




    public void setSolicitud(Solicitud solicitud) {
        this.solicitud = solicitud;
    }

    @PostPersist
    public void generateCode() {
        Date date = new Date();
        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
          year = localDate.getYear();
          
        this.codigo=year +" - "+id+" - S";
        System.out.println("Codigo solicitud creado"+id+this.getSolicitud().getId());
    }


    /**
     * 
     */
    private static final long serialVersionUID = 1L;

}

此消息表明您要從 table1 中刪除一行,而其主鍵作為外鍵存在於 table2 中。 要從 table1 中刪除一條記錄,您必須刪除在其他表中引用它的所有行才能刪除該記錄。 我希望我對你有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM