简体   繁体   English

Hibernate引发-无法删除或更新父行:外键约束失败

[英]Hibernate throws - Cannot delete or update a parent row: a foreign key constraint fails

I'm working on a basic task to remove a cascading mission but I get an exception. 我正在执行一项基本任务,以删除级联任务,但出现异常。

the class Missions has a OneToMany relationship with the class ResponsesCheckLists and OneToMany with the class StatistisquesMissions . Missions具有OneToMany与阶级关系ResponsesCheckListsOneToMany与类StatistisquesMissions

I have the following entities: 我有以下实体:

Missions.java Missions.java

@Entity
public class Missions implements Serializable{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="idMission")
private long idMission;

@Column(name="nomMission")
private String nomMission;

@OneToMany(mappedBy="Respmission", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private Collection <ResponsesCheckLists> ResponsesCheckLists;
//getters and setters

 @JsonIgnore
public Collection<ResponsesCheckLists> getResponsesCheckLists() {
    return ResponsesCheckLists;
}

public void setResponsesCheckLists(Collection<ResponsesCheckLists> responsesCheckLists) {
    ResponsesCheckLists = responsesCheckLists;
   }
}

ResponsesCheckLists.java ResponsesCheckLists.java

@Entity
public class ResponsesCheckLists implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="idResponsesCHeck")
    private long idResponsesCHeck;

    @ManyToOne
    @JoinColumn(name="missionsId")
    private Missions Respmission;

    @ManyToOne
    @JoinColumn(name="checkLists_Id")
    private CheckLists CheckLts;
     //getters and setters

     public Missions getRespmission() {
        return Respmission;
    }

    public void setRespmission(Missions respmission) {
        Respmission = respmission;
    }

    public CheckLists getCheckLts() {
        return CheckLts;
    }

    public void setCheckLts(CheckLists checkLts) {
        CheckLts = checkLts;
    }

}

StatistisquesMessions.java StatistisquesMessions.java

@Entity
public class StatistisquesMessions implements Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="idStat")
    private long idStat;

    //@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @ManyToOne
    @JoinColumn(name="equipement_ids")
    @JsonBackReference
    private Equipements statEquipements;

    @ManyToOne
    @JoinColumn(name="statMission_id")
    @JsonBackReference
    private Missions statMissions;
}

When I want to delete Missions from the MySQL database as follows (API REST): 当我要从MySQL数据库中删除Missions (如下所示)(API REST)时:

@Override
    public Boolean DeleteT(Pk id) {

        T tt= GR.findOne(id);
        GR.delete(tt);
        return true;
    }
@Autowired
    private MissionsMetier missionM;

@RequestMapping(value="/DeleteMissions")
    public Missions DeleteMissions(@Param(value ="idMission") long idMission){
        Missions mis = missionM.getT(idMission);     //I have the object "Missions"
        return missionM.DeleteT(idMission);
        }

then I get the following error 然后我得到以下错误

Cannot delete or update a parent row: a foreign key constraint fails ( BDTasks . responses_check_lists , CONSTRAINT FK73o6po4goa6ulera1d6md58i6 FOREIGN KEY ( missions_id ) REFERENCES missions ( id_mission )) 无法删除或更新父行,外键约束失败( BDTasksresponses_check_lists ,约束FK73o6po4goa6ulera1d6md58i6外键( missions_id )参考文献missionsid_mission ))

The hibernate query: 休眠查询:

Hibernate: select stat0_.stat_mission_id as stat_mis8_9_0_, stat0_.id_stat as id_stat1_9_0_, stat0_.id_stat as id_stat1_9_1_, stat0_.nbre_conforme as nbre_con2_9_1_, stat0_.nbre_not_conforme as nbre_not3_9_1_, stat0_.res_conforme as res_conf4_9_1_, stat0_.res_not_conforme as res_not_5_9_1_, stat0_.equipement_ids as equipeme7_9_1_, stat0_.stat_mission_id as stat_mis8_9_1_, stat0_.total_check_lists as total_ch6_9_1_, equipement1_.id_equipements as id_equip1_3_2_, equipement1_.actifs_id as actifs_i5_3_2_, equipement1_.date_ajout_eq as date_ajo2_3_2_, equipement1_.date_modification_eq as date_mod3_3_2_, equipement1_.nom_eq as nom_eq4_3_2_, actifs2_.id_actif as id_actif1_0_3_, actifs2_.date_ajout_actif as date_ajo2_0_3_, actifs2_.nom_actif as nom_acti3_0_3_ from statistisques_messions stat0_ left outer join equipements equipement1_ on stat0_.equipement_ids=equipement1_.id_equipements left outer join actifs actifs2_ on equipement1_.actifs_id=actifs2_.id_actif where stat0_.stat_mission_id=?
Hibernate: delete from statistisques_messions where id_stat=?
Hibernate: delete from missions where id_mission=?

Edit1: EDIT1:

@Autowired
    private MissionsMetier missionM;

    @RequestMapping(value="/DeleteMissions")
    public Missions DeleteMissions(@Param(value ="idMission") long idMission){
        Missions mis = missionM.getT(idMission);     //I have the object "Missions"
          // delete ResponsesCheckLists
    Collection<ResponsesCheckLists> Rp = res.FinsRespoCHeckListsMission(idMission);
    for(ResponsesCheckLists r : Rp){
        System.out.println("***** id response "+r.getIdResponsesCHeck());
         res.DeleteT(r.getIdResponsesCHeck());
     }

     //delete StatistisquesMessions
     Collection<StatistisquesMessions> st =mis.getStat(); 
     for(StatistisquesMessions stat : st){
              statis.DeleteT(stat.getIdStat());
          }

    mis.removeMissionsFromUsers();
   // return  missionM.DeleteT(idMission);
    //return true;
    return missionM.DeleteT(idMission); 

   return  missionM.DeleteT(idMission);

        }

I have the same problem 我也有同样的问题


Edit2: EDIT2:

@Autowired
    private MissionsMetier missionM;

    @RequestMapping(value="/DeleteMissions")
    public Missions DeleteMissions(@Param(value ="idMission") long idMission){
        Missions mis = missionM.getT(idMission);     //I have the object "Missions"

        // delete ResponsesCheckLists
    Collection<ResponsesCheckLists> Rp = res.FinsRespoCHeckListsMission(idMission);
    for(ResponsesCheckLists r : Rp){
        System.out.println("***** id response "+r.getIdResponsesCHeck());
         res.DeleteT(r.getIdResponsesCHeck());
     }

     //delete StatistisquesMessions
     Collection<StatistisquesMessions> st =mis.getStat(); 
     for(StatistisquesMessions stat : st){
              statis.DeleteT(stat.getIdStat());
          }

    mis.removeMissionsFromUsers();

       return  missionM.DeleteT(mis.getIdMission());
        }

How can I delete Missions its ResponsesCheckLists and its StatistisquesMessions children? 如何删除MissionsResponsesCheckListsStatistisquesMessions子级?

thank you very much, 非常感谢你,

The problem is resolved through the following code: 通过以下代码解决了该问题:

@RequestMapping(value="/DeleteMissions")
    public Missions DeleteMissions(@Param(value ="idMission") long idMission){
        Missions mis = missionM.getT(idMission);     //I have the object "Missions"

        // delete ResponsesCheckLists
        Collection<ResponsesCheckLists> Rp = res.FinsRespoCHeckListsMission(idMission);
        for(ResponsesCheckLists r : Rp){
                r.getCheckLts().setResponsesChecks(null);
                r.setCheckLts(null);
               res.saveT(r);
               res.DeleteT(r.getIdResponsesCHeck());
         }

         //delete StatistisquesMessions
         Collection<StatistisquesMessions> st =mis.getStat(); 
         for(StatistisquesMessions stat : st){
                  statis.DeleteT(stat.getIdStat());
        }   

       return  missionM.DeleteT(idMission);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 休眠:无法删除或更新父行:外键约束失败 - Hibernate :Cannot delete or update a parent row: a foreign key constraint fails Hibernate 抛出无法删除或更新父行:外键约束失败 - Hibernate throws Cannot delete or update a parent row: a foreign key constraint fails SpringBoot App 抛出 ava.sql.SQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败 - SpringBoot App throws ava.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails 无法删除或更新父行:外键约束在Hibernate create-drop上失败 - Cannot delete or update a parent row: a foreign key constraint fails on Hibernate create-drop Hibernate 错误:无法删除或更新父行:外键约束失败 - Hibernate ERROR: Cannot delete or update a parent row: a foreign key constraint fails Hibernate集合映射问题。无法删除或更新父行:外键约束失败 - Hibernate collections mapping questions.Cannot delete or update a parent row: a foreign key constraint fails 休眠错误:无法删除或更新父行:外键约束失败 - Hibernate error:Cannot delete or update a parent row: a foreign key constraint fails Hibernate:无法添加或更新子行:外键约束失败 - Hibernate :Cannot add or update a child row: a foreign key constraint fails Hibernate 无法添加或更新子行:外键约束失败 - Hibernate Cannot add or update a child row: a foreign key constraint fails 无法添加或更新子行:外键约束失败Hibernate - Cannot add or update a child row: a foreign key constraint fails Hibernate
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM