hibernate 级联删除报更新失败的问题
来源:互联网 发布:js滚轮时间选择控件 编辑:程序博客网 时间:2024/05/18 03:16
使用Hibernate框架,做级联删除时,出现一下报错:
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
首先查看级联删除对象的映射配置文件, 是否有配置关联关系;因为级联对应关联太多,这里就不贴了。
再打印sql语句,查询具体是在什么地方出现错误:
Hibernate: select purchaseor0_.id as id162_0_, purchaseor0_.allGoods_id as allGoods2_162_0_, purchaseor0_.purchaseOrder_id as purchase3_162_0_, purchaseor0_.planProcure_id as planProc4_162_0_, purchaseor0_.detectStatus as detectSt5_162_0_, purchaseor0_.fahuoStatus as fahuoSta6_162_0_, purchaseor0_.inStoreStatus as inStoreS7_162_0_, purchaseor0_.isToStock as isToStock162_0_, purchaseor0_.tuiHuanGoodsId as tuiHuanG9_162_0_, purchaseor0_.quantity as quantity162_0_, purchaseor0_.discount as discount162_0_, purchaseor0_.amount as amount162_0_, purchaseor0_.taxRate as taxRate162_0_, purchaseor0_.orderPrice as orderPrice162_0_, purchaseor0_.withTaxAmount as withTax15_162_0_, purchaseor0_.orderDate as orderDate162_0_, purchaseor0_.remark as remark162_0_, purchaseor0_.packingQuantity as packing18_162_0_, purchaseor0_.productionLotNumber as product19_162_0_, purchaseor0_.expirationDate as expirat20_162_0_ from purchaseOrderItem purchaseor0_ where purchaseor0_.id=?... ...//查询关联对象的SQLHibernate: update detection set purchaseOrderItem_id=null where purchaseOrderItem_id=?org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch updateat org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:254)at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:169)at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1001)at com.rhxy.dao_new.BaseSubTableDAO.delete(BaseSubTableDAO.java:299)... ...//exception
注意红色字体部分,问题就出在这里,当前表与detection表存在一对多关系,是双向关联的:
这里是修改前的映射文件描述:
<set name="detections"> <key> <column name="purchaseOrderItem_id"/> </key> <one-to-many class="com.rhxy.bean_new.procurement.Detection"/> </set>添加fetch="join":
<set name="detections" fetch="join"> <key> <column name="purchaseOrderItem_id"/> </key> <one-to-many class="com.rhxy.bean_new.procurement.Detection"/> </set>至此,问题解决;还有需要注意的是detection标准的,关于当前对象是否允许为NULL? 如果不是,这里也需要调整为允许为NULL
添加fetch="join" 是为了在查询对象的时候,使用外连接来查询关联的detection对象;因为默认是使用延迟加载,所以当你不使用fetch
属性的时候,查询出来的关联对象并不是一个真正的对象,只是一个代理;所以造成更新关联对象失败
关于 fetch属性问题,请查询百度,关于延迟加载的问题;
阅读全文
0 0
- hibernate 级联删除报更新失败的问题
- Hibernate 级联删除失败问题
- Hibernate级联删除失败问题
- hibernate 级联删除的问题
- hibernate级联删除问题
- Hibernate级联删除问题
- hibernate级联删除 更新
- hibernate级联保存更新、删除
- hibernate中关于级联删除的问题
- Hibernate删除时的级联问题
- Hibernate的级联删除
- Hibernate的级联删除
- Hibernate级联删除提示约束失败DELETE
- SQL 级联更新,级联删除的概念
- hibernate级联更新外键 需要注意的问题
- hibernate的many-to-one的级联删除问题
- 有关Hibernate的级联删除
- hibernate级联删除的注意事项
- 使用HAL库出现No Cortex-M SW Device Found
- git客户端乱码解决
- flex div
- 如何防止过拟合
- Wannafly模拟赛4 B Distance
- hibernate 级联删除报更新失败的问题
- Android获取状态栏高度,动态设置控件高度
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- ssh 配对密匙方法 修改端口 以及常见的错误
- SVAC1.0帧内预测技术分析
- 分布式一致性算法(六)分布式事务的实现方案:消息事务
- RYU应用程序API
- mycat1.6.5分片(按月)
- ES6学习笔记(三)