您的位置:首页 > 其它

Activiti 5.18 的Mybatis版本问题

2015-09-08 10:07 239 查看
试用了Activiti近期推出的5.18版本,按照User Guide初始化了工程,为简单起见使用了嵌入式的H2数据库。

增加了单元测试:

@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有何不同?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: