Activiti 5.18 的Mybatis版本问题
2015-09-08 10:07
239 查看
试用了Activiti近期推出的5.18版本,按照User Guide初始化了工程,为简单起见使用了嵌入式的H2数据库。
增加了单元测试:
结果执行到:
运行报错:
其中order by部分出现两次。
增加orderByDeploymentId().asc()方法调用仍然是同样的错误。
越过repositoryService的查询,启动流程后,查询Task时也是类似的错误。即部署、启动等操作正常执行了,但查询类操作失败。
跟踪了一下Activiti的源代码,实际执行的MyBatis语句如下(ProcessDefinition.xml):
代码中有一处orderBy的变量,具体赋值不知道哪里处理的,对于出现的问题有些不解。
网上搜索了一下,发现github上的一个帖子:
https://github.com/Activiti/Activiti/issues/597
问题描述相一致。问题在于使用了MyBatis 3.3.0版本。Activiti 5.18自身声明的MyBatis版本是3.2.5. 帖子的最后,Activiti的人员回复“Because Activiti currently does not work with MyBatis 3.3.x.”。
将maven声明的MyBatis版本修改为3.2.5,测试通过。
不知道MyBatis 3.3.0和3.2.5有何不同?
增加了单元测试:
@Test public void testDeployAndRun() { repositoryService.createDeployment().addClasspathResource("def/a.bpmn").deploy(); repositoryService.createProcessDefinitionQuery().singleResult(); // repositoryService.createProcessDefinitionQuery().processDefinitionKey("a").orderByDeploymentId().asc().singleResult(); runtimeService.startProcessInstanceByKey("a"); logger.debug("Number of process instances: " + runtimeService.createProcessInstanceQuery().count()); // List<Task> tasks = taskService.createTaskQuery().list(); // assertNotNull(tasks); // assertTrue(tasks.size() > 0); }
结果执行到:
repositoryService.createProcessDefinitionQuery().singleResult();
运行报错:
org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT RES.* FROM ACT_RE_PROCDEF RES ORDER BY ORDER[*] BY RES.ID_ ASC LIMIT ? OFFSET ? "; expected "=, NOT, EXISTS, INTERSECTS, SELECT, FROM"; SQL statement: select RES.* from ACT_RE_PROCDEF RES order by order by RES.ID_ asc LIMIT ? OFFSET ? [42001-176]
其中order by部分出现两次。
增加orderByDeploymentId().asc()方法调用仍然是同样的错误。
越过repositoryService的查询,启动流程后,查询Task时也是类似的错误。即部署、启动等操作正常执行了,但查询类操作失败。
跟踪了一下Activiti的源代码,实际执行的MyBatis语句如下(ProcessDefinition.xml):
<select id="selectProcessDefinitionsByQueryCriteria" parameterType="org.activiti.engine.impl.ProcessDefinitionQueryImpl" resultMap="processDefinitionResultMap"> ${limitBefore} select RES.* ${limitBetween} <include refid="selectProcessDefinitionsByQueryCriteriaSql"/> ${orderBy} ${limitAfter} </select>
代码中有一处orderBy的变量,具体赋值不知道哪里处理的,对于出现的问题有些不解。
网上搜索了一下,发现github上的一个帖子:
https://github.com/Activiti/Activiti/issues/597
问题描述相一致。问题在于使用了MyBatis 3.3.0版本。Activiti 5.18自身声明的MyBatis版本是3.2.5. 帖子的最后,Activiti的人员回复“Because Activiti currently does not work with MyBatis 3.3.x.”。
将maven声明的MyBatis版本修改为3.2.5,测试通过。
不知道MyBatis 3.3.0和3.2.5有何不同?
相关文章推荐
- c++对txt文件的读取与写入
- 使用javamail收发邮件
- max_element和merge(应用于有序区间)
- 数据结构学习笔记8-最大连续数组和
- Java反射详解
- Leetcode Delete Node in a Linked List
- 360对jquery的html()兼容性问题
- 文件上传下载
- Tomcat下多项目jar包共享配置
- win10开机密码怎么取消 win10开机密码清除教程
- MSSQL根据日志恢复数据库
- JS设计模式——责任链模式
- ID有多条记录导致用于副表 连接查询时会出现重复
- POLLERR的故事
- 快开学了,继续码一码iOS开发~
- 《高性能MySQL》第一章
- 原理图,PCB设计软件
- shell 获得本机IP和free端口
- 教你怎样在ppt2010抠图的小技巧|用ppt2010抠图的方法
- <context:annotation-config/>、<context:component-scan/>