PROC_INST_ID_,ASSIGNEE_,CREATE_BY根据这三个字段怎么查出发起人
时间: 2023-07-08 19:38:30 浏览: 66
可以使用以下 SQL 语句根据 `PROC_INST_ID_`、`ASSIGNEE_`、`CREATE_BY` 字段查出发起人:
```sql
SELECT DISTINCT CREATE_BY
FROM act_ru_task
WHERE PROC_INST_ID_ = #{processInstanceId}
AND (ASSIGNEE_ = CREATE_BY OR ASSIGNEE_ IS NULL)
```
其中,`#{processInstanceId}` 是流程实例ID,可以根据具体情况替换为实际的流程实例ID。
该 SQL 语句会查询出该流程实例下所有的任务,并判断任务的受理人是否为发起人,如果是,则返回该任务的创建人作为发起人。如果任务的受理人不是发起人,则该任务不是发起任务,不考虑。最终返回的是所有符合条件的任务的创建人,即为该流程实例的发起人。
需要注意的是,如果流程实例下有多个任务,且任务的受理人不一致,那么该 SQL 语句可能会返回多个发起人。针对这种情况,可以根据具体需求进行进一步的筛选和处理。
相关问题
PROC_INST_ID_,ASSIGNEE_,CREATE_BY根据这三个字段在哪张表怎么查出发起人
`PROC_INST_ID_`、`ASSIGNEE_`、`CREATE_BY` 这三个字段都存储在 `act_ru_task` 表中,因此可以通过查询该表来查出发起人。
以下是基于 Mybatis 的示例代码:
```java
@Mapper
public interface TaskMapper {
@Select("SELECT DISTINCT CREATE_BY " +
"FROM act_ru_task " +
"WHERE PROC_INST_ID_ = #{processInstanceId} " +
" AND (ASSIGNEE_ = CREATE_BY OR ASSIGNEE_ IS NULL)")
String findInitiatorByProcessInstanceId(@Param("processInstanceId") String processInstanceId);
}
```
该方法会返回符合条件的任务的创建人,即为该流程实例的发起人。
需要注意的是,如果流程实例下有多个任务,且任务的受理人不一致,那么该方法可能会返回多个发起人。针对这种情况,可以根据具体需求进行进一步的筛选和处理。
Field 'proc_inst_id' doesn't have a default value
"Field 'proc_inst_id' doesn't have a default value"是一个数据库错误信息,它表示在插入数据时,'proc_inst_id'字段没有设置默认值,而且没有提供具体的值。这通常发生在使用MySQL等数据库时,当插入一条记录时,如果某个字段没有设置默认值,并且没有提供具体的值,就会出现这个错误。
解决这个问题的方法有两种:
1. 在插入数据时,为'proc_inst_id'字段提供一个具体的值。
2. 在数据库表结构中为'proc_inst_id'字段设置一个默认值。
如果你想了解更多关于数据库错误的信息或者如何处理这种错误,请告诉我。