`
Kevin12
  • 浏览: 236152 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

org.hibernate.exception.ConstraintViolationException: could not delete: [org.jbp

阅读更多
用jbpm4做流程时候将sqlserver数据库改为mysql数据库出现的问题,就是在流程结束时候不能正常结束,错误如下:
警告: SQL Error: 1451, SQLState: 23000
二月 28, 2013 11:05:58 上午 org.hibernate.util.JDBCExceptionReporter logExceptions
严重: Cannot delete or update a parent row: a foreign key constraint fails (`myworkflow`.`jbpm4_execution`, CONSTRAINT `FK_EXEC_INSTANCE` FOREIGN KEY (`INSTANCE_`) REFERENCES `jbpm4_execution` (`DBID_`))
二月 28, 2013 11:05:58 上午 org.hibernate.event.def.AbstractFlushingEventListener performExecutions
严重: Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not delete: [org.jbpm.pvm.internal.model.ExecutionImpl#10004]
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2569)
	at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2725)
	at org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:97)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:172)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
	at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:412)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	at $Proxy9.addHandleTask(Unknown Source)

分析原因:是jbpm表我有外键关联,不能删除,可是用sqlserver数据库就可以正常结束流程,为什么换成mysql数据库就不行了呢?经过思考发现,可能是配置mysql数据库的配置文件有问题,最后发现是配置的mysql的方言的问题。

解决方法:
我的mysql方言配置如下:
<prop key="hibernate.dialect">com.sense.workflow.util.ExtMySQL5Dialect </prop>

这里我专门写了一个类,为了解决字段hibernate和java映射的错误。而原先这个类的代码如下:
package com.sense.workflow.util;
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQL5Dialect;
/**
 * mysql注册类型映射
 * @author Kevin12
 *
 */
public class ExtMySQL5Dialect  extends MySQL5Dialect{
	public ExtMySQL5Dialect(){
		super();
		this.registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());
	}
}

要将该类中继承的MySQL5Dialect改为MySQLInnoDBDialect即可,改后的代码如下:
package com.sense.workflow.util;
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQLInnoDBDialect;
/**
 * mysql注册类型映射
 * @author Kevin12
 *
 */
public class ExtMySQL5Dialect  extends MySQLInnoDBDialect{
	public ExtMySQL5Dialect(){
		super();
		this.registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());
		}
}
分享到:
评论

相关推荐

    javaee三大框架整合宅急送项目lib包

    nested exception is org.hibernate.exception.ConstraintViolationException: could not delete: [org.jbpm.pvm.internal.model.ExecutionImpl#50001] 解决: hibernate.dialect=org.hibernate.dialect.MySQL5...

    精心整理的ssh2 一些错误问题的记录(推荐)

    nested exception is org.hibernate.exception.ConstraintViolationException 此错误表示在执行批量更新操作时违反了数据库约束,可能是外键约束、唯一性约束等。检查相关的SQL语句和数据库结构,确保没有违反任何...

    Hibernate In Action中文版

    6. CRUD操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete)是数据库操作的基础,Hibernate提供了便捷的方法进行这些操作。 7. HQL(Hibernate Query Language):Hibernate特有的查询语言,类似...

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02

    5. CRUD操作:了解如何使用Hibernate进行创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据的基本步骤。包括保存、加载、更新、删除实体对象的方法。 6. HQL(Hibernate Query Language):学习...

    学习hibernate第一章内容

    5. 异常体系:理解Hibernate的异常体系,如HibernateException、ConstraintViolationException等。 6. Session和Transaction:理解Session的生命周期和事务管理,以及它们在实际应用中的最佳实践。 本章作为...

    hibernate包

    Hibernate 支持 Create(创建)、Read(读取)、Update(更新)和 Delete(删除)等基本数据库操作,通过 Session 接口的 save()、saveOrUpdate()、get()、load()、update()、merge()、delete() 方法实现。...

    hibernate-validator-6.0.2

    《Hibernate Validator 深度解析与应用指南》 Hibernate Validator 是一个基于 Java Bean Validation 规范的实现,它为 Java 应用程序提供了强大的验证框架。在本文中,我们将深入探讨 Hibernate Validator 的核心...

    夏昕.深入浅出Hibernate.zip

    8. 异常处理:在使用Hibernate时,可能会遇到如HibernateException、ConstraintViolationException等异常,了解这些异常的含义及处理方法对于排查问题至关重要。 9. 实战应用:书中通过实际的项目案例,详细展示了...

    Hibernate_Demo

    Hibernate抛出的异常通常继承自JDBC的SQLException,如ConstraintViolationException(违反约束),StaleObjectStateException(过时对象状态)等,需要正确捕获并处理。 通过【Hibernate_Demo】项目,开发者可以...

    java hibernate上课源码6

    Hibernate 抛出的异常如ConstraintViolationException(违反约束条件)、OptimisticLockingFailureException(乐观锁失败)等,需要在程序中适当地捕获和处理。 8. 批量操作: Hibernate 支持批处理,如批处理...

    hibernate-release-5.3.12.Final.zip

    1. 异常处理:了解Hibernate的异常体系,如ConstraintViolationException,OptimisticLockingFailureException等,以应对可能出现的问题。 2. 关联映射:掌握一对一、一对多、多对多关联的配置和使用,如@OneToOne, ...

    10_hibernate.rar

    Hibernate有一套自己的异常体系,如HibernateException、ConstraintViolationException等,帮助开发者定位和解决问题。 9. 高级特性 - 联合主键:多个字段共同组成主键。 - 继承映射:支持单表继承、多表继承等...

    Hibernate开发所需的jar包

    - Hibernate抛出的异常通常继承自JDBC的SQLException,如ConstraintViolationException(违反约束),ObjectRetrievalFailureException(对象检索失败)等。 9. 批量操作: - 使用`Session.saveAll()`, `Session....

    Struts+Hibernate实现MVC

    4. **异常处理**:整合后的系统需要考虑Hibernate的异常(如ConstraintViolationException)如何在Struts中适当地捕获和处理。 在实际开发中,Struts处理HTTP请求并控制流程,而Hibernate负责数据的持久化。这种...

    hibernate_reference中文版和Hibernate中文手册

    5. CRUD操作:Hibernate提供了便捷的方法来完成创建(save()、persist())、读取(get()、load()、query())、更新(update()、merge())和删除(delete())对象的操作。其中,HQL(Hibernate Query Language)和...

    Hibernate_01_HelloWorld.rar

    6. **CRUD操作**:Hibernate提供了增删查改(Create, Read, Update, Delete)的操作接口,如save()、get()、update()、delete()等,方便地完成对数据库的操作。 7. **查询语言HQL**:Hibernate Query Language是...

    Hibernate的通用dao

    **标题:“Hibernate的通用DAO”** 在Java编程领域,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,从而减少了对SQL的直接依赖。通用DAO(Data Access Object)是一...

    Hibernate的小例子

    6. **CRUD操作**:创建(persist),读取(get,load,query),更新(update),删除(delete)是Hibernate最基础的操作,我们将看到如何使用Session接口完成这些操作。 7. **HQL和Criteria查询**:Hibernate提供...

    hibernate笔记

    Hibernate有一套自己的异常体系,如HibernateException、ConstraintViolationException等,它们继承自JDBC的SQLException,有助于在开发过程中定位问题。 总之,Hibernate通过其强大的ORM能力,使得Java开发者能...

    Hibernate.rar

    了解Hibernate的异常体系,如HibernateException、ConstraintViolationException等,有助于进行错误定位和处理。 通过上述内容,你应该对Hibernate有了基本的理解。在实际练习中,你可以创建一个简单的Java项目,...

Global site tag (gtag.js) - Google Analytics