当前使用版本(必填,否则不予处理)
3.3.1.tmp
该问题是如何引起的?(确定最新版也有问题再提!!!)
SQL SERVER 2008 更新数据,使用自动填充字段值方式更新时间时,会使用函数now(),SQL SERVER不支持此函数
重现步骤(如果有就写完整)
更新使用的方法是在service调用updateById()方法。
自动填充使用的下面的方式:
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());// 起始版本 3.3.0(推荐使用)
this.strictUpdateFill(metaObject, "updateUserId", Long.class, LoginUser.getUserId());
this.strictUpdateFill(metaObject, "updateUserName", String.class, LoginUser.getUserName());
//this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如3.3.1.8-SNAPSHOT)
/ 上面选其一使用,下面的已过时(注意 strictUpdateFill 有多个方法,详细查看源码) /
//this.setFieldValByName("operator", "Tom", metaObject);
//this.setUpdateFieldValByName("operator", "Tom", metaObject);
}
报错信息
update_time=now(), update_user_id=?, update_user_name=? WHERE id=? AND del=0
Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 'now' 不是可以识别的 内置函数名称。
; uncategorized SQLException; SQL state [S00010]; error code [195]; 'now' 不是可以识别的 内置函数名称。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 'now' 不是可以识别的 内置函数名称。 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88)
Comment From: miemieYaho
自动填充 不会生成任何函数,自己排查