关于hibernate删除记录的问题

问题描述

我要删除的表记录在整个系统中有很多外键,我在service删除org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch updateCaused by: java.sql.BatchUpdateException: ORA-02292: 违反完整约束条件 (DCMIS.FK_DZ_GZHB_CYXX_ID_DZ_CYXX) - 已找到子记录但是在service里面又无法捕获这个异常,请问怎么才能捕获这个异常。问题补充:runtime异常无法捕获,但是它在后台还是要报异常错误,这对系统的健壮性有影响吗问题补充:比如我是在A实体里这样配置,这就是一个外键关系关联SysGroup 这个实体@ManyToOne(cascade = { CascadeType.MERGE })@JoinColumn(name = "parentid")private SysGroup sysGroup;然后删除sysGroup实体的时候就要报错

解决方案

这是个运行期的runtime异常,应该是无法捕获的,系统自动会抛出异常
解决方案二:
不是说了,你正确的配置好实体的关系,他就不会报runtime的错误了他报了说明你没有正确的配置他们的关系,可能就简单得配置了下,只能新增不能删除这种问题就是配置的问题
解决方案三:
这个是runtimeException一般如果抛runtime异常的话,不是你程序写得有问题就是无法处理的异常这种异常一般最外层捕获后对事务进行回滚,因为你捕获了也没用他抛runtimeException就是不想让你捕获的请修改自己的程序来解决这个问题比较好如果你另外一个外键对应的对象也用hibernate映射的话,请配置他们的关系,同时配制当删除A时同时删除BA: cascade="none" update="true" delete="true" B: inverse="true" cascade="all"
解决方案四:
一直向外抛(throws)dao -- service -- action在合适的位置捕获

时间: 2024-09-17 20:45:43

关于hibernate删除记录的问题的相关文章

关于hibernate删除记录的疑问

问题描述 我程序里是这样删除的privateT_coursecourse=newT_course();course.setId(Integer.parseInt(request.getParameter("record_id")));courseDAO.delete(course);publicvoiddelete(To){getSession().delete(o);}生成的sql语句是这样deletefromT_coursewherel_id=?程序里并没有写session.flu

gethibernatetemplate-getHibernateTemplate().delete()删除记录是报错

问题描述 getHibernateTemplate().delete()删除记录是报错 SpingMVC+Hibernate删除某一条数据库不存在的记录的时候,就会报错误: 13:55:38.206 [http-8080-2] ERROR org.hibernate.jdbc.AbstractBatcher - Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpecte

listbox-MFC列表控件中删除记录的问题

问题描述 MFC列表控件中删除记录的问题 要实现点击按钮后删除列表中的一条记录代码如下:void CMyAccountView::OnClickedDelete(){ int nCurSel = m_listctrl.GetSelectionMark(); if (LB_ERR == nCurSel) MessageBox(_T(""请选择所要删除的内容!""));else m_pSet->MoveFirst(); for(int i=0;i m_pSet-&

ASP教程:删除记录和链接数据库程序解释

一.删除记录 opendataconn '打开数据库连接 xxlb=RtnReplaceInt(Trim(request("xxlb")),0) '从里到外依次是接收xxlb变量,去除变量两端的空格,最外层是一个自定义函数,估计与替换有关. id=changechr(request("id")) '接收id,并转换成字符串 ids=split(id,",") '把id按 "," 分割,并保存到数组ids中 for i=0 to

菜鸟学ADO实例教程之ADO 删除记录

ado|教程 本站原创内容,转载请注明出处网页教学网. 我们可以使用SQL DELETE命令来删除表中的一个记录,和添加记录的方法一样,首先列出记录内容 <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "e:/webjx/webjx.mdb&qu

菜鸟十天学会ASP教程之第七天:删除记录

教程|十天学会 上一节:查询记录 学习目的:学会数据库的基本操作--删除记录 开门见山,大家直接看程序. exec="delete * from guest where id="&request.form("id") 上面这句话完成了删除记录的操作,不过锁定记录用了记录唯一的表示id,我们前面建立数据库的时候用的是系统给我们的主键,名字是编号,由于是中文的名字不是很方便,大家可以修改为id,我已经修改了啊! 不修改的话就是用下面的代码了: exec=&quo

SQL循序渐进(8)删除记录

删除记录 Delete语句是用来从表中删除记录或者行,其语句格式为: delete from "tablename" where "columnname" OPERATOR "value" [and|or "column" OPERATOR "value"]; [ ] = optional 下面还是举个例子: delete from employee; 这条语句没有where语句,所以它将删除所有的记录,因

ASP删除记录和链接数据库程序解释

一.删除记录 opendataconn '打开数据库连接 xxlb=RtnReplaceInt(Trim(request("xxlb")),0) '从里到外依次是接收xxlb变量,去除变量两端的空格,最外层是一个自定义函数,估计与替换有关. id=changechr(request("id")) '接收id,并转换成字符串 ids=split(id,",") '把id按 "," 分割,并保存到数组ids中 for i=0 to

js实现删除记录时的提示效果

 删除记录时的提示效果,挺人性化的,实现的方法有很多,在本文为大家介绍下使用js是如何实现的 样式   代码如下: <style type="text/css">  body{font-size:13px}  .divShow{line-height:32px;height:32px;background-color:#eee;width:280px;padding-left:10px}  .divShow span{padding-left:50px}  .dialog{