org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

本文介绍了一种在使用Hibernate框架时遇到的唯一约束异常问题及其解决方案。问题源于级联添加数据过程中违反了数据库的唯一性约束,通过调整序列设置与数据库主键同步,最终解决了这一异常。
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:114)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109)
at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:244)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2411)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2874)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
at biz.ProductBiz.addPtype(ProductBiz.java:88)
at servlet.Test.main(Test.java:43)
Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (T04.SYS_C0011048)


at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10070)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:213)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)

... 16 more


使用hibernate框架,进行级联添加数据时报错,


看到后面的 Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (T04.SYS_C0011048)


这是我的商品类型表映射的配置,我用的主键用的是数据库里的序列

<class name="pojo.PType" table="`S_PTYPE`">
<id name="typeID" type="java.lang.Integer" column="typeid">
<generator class="sequence">
<param name="sequence">seq_ptype</param>
</generator>
</id>
<property name="typeName" type="java.lang.String" column="typename"></property>
<set name="products" cascade="save-update" inverse="true">
<key column="productype"></key>
<one-to-many class="pojo.Product"/>
 </set>
</class> 


于是我把数据库的里这个序列使用后发现序列是2,但数据表里的主键已经到了6了,所以应该是再添加测试数据的时候,没有用序列添加,所以才会出现违反唯一约定



我把序列用到7以后,再去执行级联添加,运行正常

数据集介绍:烟雾检测数据集数据集名称:烟雾检测数据集图片数量:- 训练集:2,566张图片分类类别:- Smoke(烟雾):专注识别各类场景中的烟雾形态,覆盖不同密度、扩散状态的烟雾特征。标注格式:- YOLO格式,包含烟雾目标的归一化边界框坐标(中心点x,y + 宽高w,h)- 数据来源:真实场景图像,涵盖火灾监控、环境监测等实际应用火灾预警系统开发:构建实时烟雾检测AI模型,集成至安防监控或无人机巡检系统,实现火灾早期预警。环境安全监测应用:用于工业区、森林等场景的智能监测平台,自动识别异常烟雾排放。应急管理研究:支持消防响应算法优化研究,提升灾害场景下的目标检测准确率。智慧城市基建:适配交通枢纽、公共场所的智能CCTV系统,增强安全防控能力。场景覆盖全面:- 数据源自多场景实拍(含火灾现场、工业环境等),包含不同光照和背景复杂度- 标注样例显示烟雾目标具有尺度多样性(小范围局部烟雾至大范围浓烟)标注精准适配任务:- 纯烟雾单类别标注,消除多目标干扰,聚焦核心检测任务- YOLO格式可直接应用于目标检测模型训练(如YOLOv5/v8)实战价值突出:- 针对安防、环保等高风险场景设计,模型输出可直接驱动预警决策- 无数据增强的原始数据(noaug特性),确保模型泛化到真实环境
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值