org.jbpm.api.JbpmException: no jBPM DB schema: no JBPM4_EXECUTION table
2014-06-14 14:40
831 查看
出处:http://kevin12.iteye.com/blog/1949491
报错如下:
org.jbpm.internal.log.Jdk14Log info
信息: exception while executing command org.jbpm.pvm.internal.cmd.CheckDbCmd@2bfb3f37
org.jbpm.api.JbpmException: no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
最近将jbpm4.4项目用的数据库由sqlserver改成oracle 11g的,在配置hibernate时候出现了上面的错误,在网上没有查到原因,但是根据打印的错误仔细分析后,猜测可能是数据库方言的问题,因为之前将sqlserver数据库改成mysql时候有过类似的问题,只不过当时没有记录下来,现在记录一下,以防后用。
hibernate连接不同数据库有不同的方言,下面列出来如下:
mysql的方言:
Java代码
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
sqlserver的方言:
Java代码
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
oracle 的方言:
Java代码
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
但是配置好相应数据库的方言后,项目就可以正常运行了,但是有一个地方要注意的是,在java项目中执行数据库的增删改查时候有时候数据库字段类型和java的数据类型转换会出现问题,这时候就要重新方言了,下面我列出重写mysql和sqlserver方言的例子:
也可以参考我之前写的帖子:/article/3817540.html
对于mysql的:
Java代码
package com.sense.workflow.util;
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQLInnoDBDialect;
/**
* mysql注册类型映射
* @author lujinyong
*
*/
public class ExtMySQL5Dialect extends MySQLInnoDBDialect{
public ExtMySQL5Dialect(){
super();
this.registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());
}
}
对于sqlserver的:
Java代码
package com.sense.workflow.util;
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.SQLServerDialect;
/**
* sqlserver2008注册类型映射
* @author lujinyong
*
*/
public class SqlServer2008Dialect extends SQLServerDialect{
public SqlServer2008Dialect() {
super();
registerHibernateType(Types.CHAR, Hibernate.STRING.getName());
registerHibernateType(Types.VARCHAR, Hibernate.STRING.getName());
registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());
registerHibernateType(Types.DECIMAL, Hibernate.DOUBLE.getName());
registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
}
}
在hibernate中的引用如下:
Java代码
<prop key="hibernate.dialect">com.sense.workflow.util.ExtMySQL5Dialect </prop>
Java代码
<prop key="hibernate.dialect">com.sense.workflow.util.SqlServer2008Dialect</prop>
oracle的不再写。
报错如下:
org.jbpm.internal.log.Jdk14Log info
信息: exception while executing command org.jbpm.pvm.internal.cmd.CheckDbCmd@2bfb3f37
org.jbpm.api.JbpmException: no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
最近将jbpm4.4项目用的数据库由sqlserver改成oracle 11g的,在配置hibernate时候出现了上面的错误,在网上没有查到原因,但是根据打印的错误仔细分析后,猜测可能是数据库方言的问题,因为之前将sqlserver数据库改成mysql时候有过类似的问题,只不过当时没有记录下来,现在记录一下,以防后用。
hibernate连接不同数据库有不同的方言,下面列出来如下:
mysql的方言:
Java代码
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
sqlserver的方言:
Java代码
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
oracle 的方言:
Java代码
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
但是配置好相应数据库的方言后,项目就可以正常运行了,但是有一个地方要注意的是,在java项目中执行数据库的增删改查时候有时候数据库字段类型和java的数据类型转换会出现问题,这时候就要重新方言了,下面我列出重写mysql和sqlserver方言的例子:
也可以参考我之前写的帖子:/article/3817540.html
对于mysql的:
Java代码
package com.sense.workflow.util;
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQLInnoDBDialect;
/**
* mysql注册类型映射
* @author lujinyong
*
*/
public class ExtMySQL5Dialect extends MySQLInnoDBDialect{
public ExtMySQL5Dialect(){
super();
this.registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());
}
}
对于sqlserver的:
Java代码
package com.sense.workflow.util;
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.SQLServerDialect;
/**
* sqlserver2008注册类型映射
* @author lujinyong
*
*/
public class SqlServer2008Dialect extends SQLServerDialect{
public SqlServer2008Dialect() {
super();
registerHibernateType(Types.CHAR, Hibernate.STRING.getName());
registerHibernateType(Types.VARCHAR, Hibernate.STRING.getName());
registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());
registerHibernateType(Types.DECIMAL, Hibernate.DOUBLE.getName());
registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
}
}
在hibernate中的引用如下:
Java代码
<prop key="hibernate.dialect">com.sense.workflow.util.ExtMySQL5Dialect </prop>
Java代码
<prop key="hibernate.dialect">com.sense.workflow.util.SqlServer2008Dialect</prop>
oracle的不再写。
相关文章推荐
- org.jbpm.api.JbpmException: no org.springframework.transaction.PlatformTransactionManager in current
- org.jbpm.api.JbpmException: no environment to get org.jbpm.pvm.internal.session.RepositorySession
- org.jbpm.api.JbpmException: no process definition with key '***'
- jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
- JbpmException: no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target firs
- [解决方法]org.dbunit.dataset.NoSuchTableException: Did not find table 'tab1' in schema 'null'
- org.jbpm.api.JbpmException: no process definition with id 'test1'
- org.jbpm.api.JbpmException: No unnamed transitions were found for the task '?????'
- jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
- org.dbunit.dataset.NoSuchTableException: t_group
- 一个任务拥有多个外向转移jbpm.api.JbpmException: No transition named 'to 总经理审批' was found.
- Caused by: org.jbpm.api.JbpmException: resource jbpm.cfg.xml does not exist
- Caused by: org.jbpm.api.JbpmException: resource classpath:jdpm/jbpm.cfg.xml does not exist
- 遭遇org.dbunit.dataset.NoSuchTableException
- 遭遇org.dbunit.dataset.NoSuchTableException
- org.json.JSONException: No value for api_data_ver
- java.lang.IllegalArgumentException: No enum constant org.apache.ws.commons.schema.XmlSchemaForm.
- 简单请假流程中的错误!org.jbpm.api.JbpmException: execution is not in a activity or in a transition
- org.jbpm.api.JbpmException
- 初学JBPM。发现的错误JBPM no jBPM DB schema