出现这个异常的原因是因为你要删除的表和另一张表有关联外键,在网上找了很多方法,例如,在表的映射文件里设置cascade="delete"等方法,我觉得没什么问题,但是依然报错,最后我的解决办法是,在删除表之前先删除与他相关联的表的内容。
//VoteContext
public void delete(TextVote textVote) {
String hql = "delete from TextVoteContext tvc where tvc.textVote = ?";
getSession().createQuery(hql).setEntity(0, textVote).executeUpdate();
}
//Vote
public void delete(TextVote textVote) {
getSession().delete(textVote);
}
//action
public String deleteTextVote(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
Integer textVoteId = Integer.parseInt(request.getParameter("textVoteId"));
TextVote textVote = adminService.findById(textVoteId);
adminService.deleteTextVoteContext(textVote);
adminService.deleteTextVote(textVote);
return SUCCESS;
}