org.jbpm.api.JbpmException: no jBPM DB schema: no JBPM4_EXECUTION table

出处: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代码   收藏代码
  1. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  

sqlserver的方言:
Java代码   收藏代码
  1. <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>  

oracle 的方言:
Java代码   收藏代码
  1. <property name="dialect">org.hibernate.dialect.OracleDialect</property>  

但是配置好相应数据库的方言后,项目就可以正常运行了,但是有一个地方要注意的是,在java项目中执行数据库的增删改查时候有时候数据库字段类型和java的数据类型转换会出现问题,这时候就要重新方言了,下面我列出重写mysql和sqlserver方言的例子:
也可以参考我之前写的帖子: http://kevin12.iteye.com/blog/1815460
对于mysql的:
Java代码   收藏代码
  1. package com.sense.workflow.util;  
  2. import java.sql.Types;  
  3. import org.hibernate.Hibernate;  
  4. import org.hibernate.dialect.MySQLInnoDBDialect;  
  5. /** 
  6.  * mysql注册类型映射 
  7.  * @author lujinyong 
  8.  * 
  9.  */  
  10. public class ExtMySQL5Dialect  extends MySQLInnoDBDialect{  
  11.     public ExtMySQL5Dialect(){  
  12.         super();  
  13.         this.registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());  
  14.         }  
  15. }  


对于sqlserver的:
Java代码   收藏代码
  1. package com.sense.workflow.util;  
  2. import java.sql.Types;  
  3. import org.hibernate.Hibernate;  
  4. import org.hibernate.dialect.SQLServerDialect;  
  5. /** 
  6.  * sqlserver2008注册类型映射 
  7.  * @author lujinyong 
  8.  * 
  9.  */  
  10. public class SqlServer2008Dialect extends SQLServerDialect{  
  11.     public SqlServer2008Dialect() {     
  12.         super();     
  13.         registerHibernateType(Types.CHAR, Hibernate.STRING.getName());     
  14.         registerHibernateType(Types.VARCHAR, Hibernate.STRING.getName());     
  15.         registerHibernateType(Types.LONGVARCHAR, Hibernate.STRING.getName());     
  16.         registerHibernateType(Types.DECIMAL, Hibernate.DOUBLE.getName());   
  17.         registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());   
  18.     }     
  19. }  


在hibernate中的引用如下:
Java代码   收藏代码
  1. <prop key="hibernate.dialect">com.sense.workflow.util.ExtMySQL5Dialect </prop>  

Java代码   收藏代码
  1. <prop key="hibernate.dialect">com.sense.workflow.util.SqlServer2008Dialect</prop>  

oracle的不再写。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值