一个流程结束了 要执行一个监听器更改数据库
比如这里通过流程号吧状态改成已完成
然后就报错了
Caused by: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='YJ2', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #4 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 3).
触发器代码如下
@Component
public class Taskdev implements ExecutionListener{
@Override
public void notify(DelegateExecution delegateExecution) throws Exception {
MyfukuanManager myfukuanService=SpringUtil.getObject(MyfukuanManager.class);
PageData pd = new PageData();
SimpleDateFormat sdc = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
Date date = new Date();
String dateSt = sdc.format(date);
String eventName = delegateExecution.getEventName();
if ("end".equals(eventName)) {
System.out.println("end=========");
delegateExecution.getId();
pd.put("YJ5", delegateExecution.getId());//流程号
pd.put("ENDTIME", dateSt); //结束时间
pd.put("YJ4", "已完成");
System.out.println(pd);//特地打出来看看数据
myfukuanService.lcinfo(pd);//到这一步就报错了
}
}
}
sql语句如下
<!-- 结束流程 -->
<update id="end" parameterType="pd">
update
<include refid="tableName"></include>
set
ENDTIME = #{ENDTIME,jdbcType=VARCHAR},
YJ4 = #{YJ4,jdbcType=VARCHAR},
# YJ3 = #{YJ3},
# YJ2 = #{YJ2},
# YJ1 = #{YJ1}
where
YJ5 = #{YJ5,jdbcType=VARCHAR}
</update>
最后怎么解决的
去掉sql里注释就好了
看来有时候,注释还是不如删除有用的