Flowable 查询当前用户的待办任务方法报错

在使用Flowable查询当前用户待办任务时遇到错误,错误涉及SQL查询缺失条件。通过检查发现,Flowable API中对于或条件(OR)的使用需要使用.or()和.endOr()进行包裹,以正确构建查询语句。修复此问题后,待办任务查询得以正常执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在查询当前用户的待办任务,包括本人就是处理人的或者还是候选人状态的任务时,方法为:

List<Task> list = taskService.createTaskQuery().taskCandidateOrAssigned(userId).
orderByTaskCreateTime().desc().list();

执行出现以下错误:

 复制出来的完整sql为:
SELECT RES.*,                 VAR.ID_ as VAR_ID_, VAR.NAME_ as VAR_NAME_, VAR.TYPE_ as VAR_TYPE_, VAR.REV_ as VAR_REV_,         VAR.PROC_INST_ID_ as VAR_PROC_INST_ID_, VAR.EXECUTION_ID_ as VAR_EXECUTION_ID_, VAR.TASK_ID_ as VAR_TASK_ID_,         VAR.BYTEARRAY_ID_ as VAR_BYTEARRAY_ID_, VAR.DOUBLE_ as VAR_DOUBLE_,         VAR.TEXT_ as VAR_TEXT_, VAR.TEXT2_ as VAR_TEXT2_, VAR.LONG_ as VAR_LONG_                               FROM (                                  SELECT   RES.*                   from ACT_RU_TASK RES            WHERE  (RES.ASSIGNEE_ = ?               or (                                RES.ASSIGNEE_ is null and                                exists(select LINK.ID_ from ACT_RU_IDENTITYLINK LINK where LINK.TASK_ID_ = RES.ID_                and LINK.TYPE_ = 'candidate' and (LINK.USER_ID_ = ? or                                  ))))                    order by RES.CREATE_TIME_ desc                   ) RES                                                           left outer join ACT_RU_VARIABLE VAR ON RES.PROC_INST_ID_ = VAR.EXECUTION_ID_                                           order by RES.CREATE_TIME_ desc

可以看出以上方法执行的sql 缺失条件

 后来查了一下,flowable api提供or语法的查询,修改方法如下:

 TaskQuery query =taskService.createTaskQuery();
 query.or().taskCandidateUser(userId).taskAssignee(userId).endOr();
 List<Task> list = query.orderByTaskCreateTime().desc().list();

重点就是或条件要用.or()和.endOr()包裹住。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值