java.sql.SQLException: 無效的列類型: 1111
阿新 • • 發佈:2018-09-05
tin bug ted 映射 arc mark bsp iba 使用
在使用Mybaits Plus更新數據時報錯:
2018-09-05 10:55:40.712 DEBUG 15828 --- [nio-8110-exec-1] c.c.x.s.m.A.updateAllColumnById : ==> Preparing: UPDATE ais0060 SET TENANT_ID=?,LIFNR=?,NAME1=?,ORT01=?,TELF1=?,del_flag=?,remarks=?,create_by=?,create_date=?,update_by=?,update_date=? WHERE id=? org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property=‘et.tenantId‘, 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 #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 無效的列類型: 1111 at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446) at com.sun.proxy.$Proxy124.update(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
原因為TENANT_ID字段為null。
網查原因大多給出Mybatis修改XML中的SQL寫法,但是Mybatis Plus基礎CRUD不需要手寫SQL,整了半天,找到一種解決方法:
/**
* 租戶ID
*/
@TableField(value = "TENANT_ID", el = "tenantId, jdbcType=VARCHAR")
private String tenantId;
在@TableField註解中增加{對象.屬性}。同時,el的更多用法:
/** * <p> * 當該Field為類對象時, 可使用#{對象.屬性}來映射到數據表. * </p> * <p> * 支持:@TableField(el = "role, jdbcType=BIGINT)<br> * 支持:@TableField(el = "role, typeHandler=com.baomidou.springcloud.typehandler.PhoneTypeHandler") * </p> */ String el() default "";
Mybatis寫SQL語句修改方法參見:https://blog.csdn.net/stronglyh/article/details/45369611
jdbcType介紹參見:https://www.cnblogs.com/tongxuping/p/7134113.html
java.sql.SQLException: 無效的列類型: 1111