Activiti 5.18 的Mybatis版本問題

試用了Activiti近期推出的5.18版本,按照User Guide初始化了工程,爲簡單起見使用了嵌入式的H2數據庫。
java

增長了單元測試:git

@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);
}

結果執行到:github

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部分出現兩次。apache

增長orderByDeploymentId().asc()方法調用仍然是一樣的錯誤。maven

越過repositoryService的查詢,啓動流程後,查詢Task時也是相似的錯誤。即部署、啓動等操做正常執行了,但查詢類操做失敗。ide

跟蹤了一下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上的一個帖子:ui

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有何不一樣?

相關文章
相關標籤/搜索