JBPM3.2.2中的BUG,在3.2.2中 你是否遇到了Errors in named queries: GraphSession.findTokensForProcessInNode 这样的错误?
请打开hibernate.queries.hbm.xml这个文件 查看这段代码:
<query name="GraphSession.findTokensForProcessInNode">
<![CDATA[
select token
from org.jbpm.graph.exe.Token token
where token.processInstance.processDefinition.name = :processDefinitionName
and node.name = :nodeName
]]>
</query>
看到没?
它node属性缺少了对象了:应该将代码改成:
<query name="GraphSession.findTokensForProcessInNode">
<![CDATA[
select token
from org.jbpm.graph.exe.Token token
where token.processInstance.processDefinition.name = :processDefinitionName
and token.node.name = :nodeName
]]>
</query>
你是否遇到否遇到了Errors in named queries: GraphSession.deleteJobsForProcessInstance。。。。这样的错误
请将以下代码:
<query name="GraphSession.deleteTaskInstancesById">
<![CDATA[
delete
from org.jbpm.taskmgmt.exe.TaskInstance t
where t.id in (:taskInstanceIds)
]]>
</query>
<query name="GraphSession.deleteJobsForProcessInstance">
<![CDATA[
delete from org.jbpm.job.Job job
where job.processInstance = :processInstance
]]>
</query>
<query name="JobSession.suspendJobs">
<![CDATA[
update org.jbpm.job.Job job
set job.isSuspended = true
where job.token = :token
]]>
</query>
<query name="JobSession.resumeJobs">
<![CDATA[
update org.jbpm.job.Job job
set job.isSuspended = false
where job.token = :token
]]>
</query>
<query name="JobSession.deleteTimersForProcessInstance">
<![CDATA[
delete from org.jbpm.job.Timer timer
where timer.processInstance = :processInstance
]]>
</query>
<query name="JobSession.deleteExecuteNodeJobsForProcessInstance">
<![CDATA[
delete from org.jbpm.job.ExecuteNodeJob executeNodeJob
where executeNodeJob.processInstance = :processInstance
]]>
</query>
改成:
<!-- ###################################################### -->
<query name="GraphSession.deleteTaskInstancesById">
<![CDATA[
delete
from org.jbpm.taskmgmt.exe.TaskInstance
where id in (:taskInstanceIds)
]]>
</query>
<query name="GraphSession.deleteJobsForProcessInstance">
<![CDATA[
delete from org.jbpm.job.Job
where processInstance = :processInstance
]]>
</query>
<query name="JobSession.suspendJobs">
<![CDATA[
update org.jbpm.job.Job
set isSuspended = true
where token = :token
]]>
</query>
<query name="JobSession.resumeJobs">
<![CDATA[
update org.jbpm.job.Job
set isSuspended = false
where token = :token
]]>
</query>
<query name="JobSession.deleteTimersForProcessInstance">
<![CDATA[
delete from org.jbpm.job.Timer
where processInstance = :processInstance
]]>
</query>
<query name="JobSession.deleteExecuteNodeJobsForProcessInstance">
<![CDATA[
delete from org.jbpm.job.ExecuteNodeJob
where processInstance = :processInstance
]]>
</query>
并在你的hibernateProperties属性中将以下添加:
<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
请打开hibernate.queries.hbm.xml这个文件 查看这段代码:
<query name="GraphSession.findTokensForProcessInNode">
<![CDATA[
select token
from org.jbpm.graph.exe.Token token
where token.processInstance.processDefinition.name = :processDefinitionName
and node.name = :nodeName
]]>
</query>
看到没?
它node属性缺少了对象了:应该将代码改成:
<query name="GraphSession.findTokensForProcessInNode">
<![CDATA[
select token
from org.jbpm.graph.exe.Token token
where token.processInstance.processDefinition.name = :processDefinitionName
and token.node.name = :nodeName
]]>
</query>
你是否遇到否遇到了Errors in named queries: GraphSession.deleteJobsForProcessInstance。。。。这样的错误
请将以下代码:
<query name="GraphSession.deleteTaskInstancesById">
<![CDATA[
delete
from org.jbpm.taskmgmt.exe.TaskInstance t
where t.id in (:taskInstanceIds)
]]>
</query>
<query name="GraphSession.deleteJobsForProcessInstance">
<![CDATA[
delete from org.jbpm.job.Job job
where job.processInstance = :processInstance
]]>
</query>
<query name="JobSession.suspendJobs">
<![CDATA[
update org.jbpm.job.Job job
set job.isSuspended = true
where job.token = :token
]]>
</query>
<query name="JobSession.resumeJobs">
<![CDATA[
update org.jbpm.job.Job job
set job.isSuspended = false
where job.token = :token
]]>
</query>
<query name="JobSession.deleteTimersForProcessInstance">
<![CDATA[
delete from org.jbpm.job.Timer timer
where timer.processInstance = :processInstance
]]>
</query>
<query name="JobSession.deleteExecuteNodeJobsForProcessInstance">
<![CDATA[
delete from org.jbpm.job.ExecuteNodeJob executeNodeJob
where executeNodeJob.processInstance = :processInstance
]]>
</query>
改成:
<!-- ###################################################### -->
<query name="GraphSession.deleteTaskInstancesById">
<![CDATA[
delete
from org.jbpm.taskmgmt.exe.TaskInstance
where id in (:taskInstanceIds)
]]>
</query>
<query name="GraphSession.deleteJobsForProcessInstance">
<![CDATA[
delete from org.jbpm.job.Job
where processInstance = :processInstance
]]>
</query>
<query name="JobSession.suspendJobs">
<![CDATA[
update org.jbpm.job.Job
set isSuspended = true
where token = :token
]]>
</query>
<query name="JobSession.resumeJobs">
<![CDATA[
update org.jbpm.job.Job
set isSuspended = false
where token = :token
]]>
</query>
<query name="JobSession.deleteTimersForProcessInstance">
<![CDATA[
delete from org.jbpm.job.Timer
where processInstance = :processInstance
]]>
</query>
<query name="JobSession.deleteExecuteNodeJobsForProcessInstance">
<![CDATA[
delete from org.jbpm.job.ExecuteNodeJob
where processInstance = :processInstance
]]>
</query>
并在你的hibernateProperties属性中将以下添加:
<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>