赞
踩
今天在进行分布式重构项目的时候碰到一个问题,在执行sql的时候只有update不能成功,其他语句都可以正常执行,报错如下: 版本:org.mybatis:mybatis:3.4.5
接口:
@UpdateProvider(type = ManagerProvider.class, method = "updateManager") int updateManager(Manager manager) throws Exception;报错信息
Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
org.springframework.jdbc.UncategorizedSQLException: Error getting generated key or setting result to parameter object. Cause: java.sql.SQLException: 不允许的操作;
uncategorized SQLException for SQL []; SQL state [99999]; error code [17090]; 不允许的操作; nested exception is java.sql.SQLException: 不允许的操作
原因:
由于mybatis在执行insert和update的时候都默认生成key,然后注入,所以在执行update的时候会报错。
解决办法:
在接口上增加注解 @Options(useGeneratedKeys = false),不让mybatis自动注入key,问题解决。
@UpdateProvider(type = ManagerProvider.class, method = "updateManager") @Options() // @Options(useGeneratedKeys = false) int updateManager(Manager manager) throws Exception;
最后说明一点,版本:org.mybatis:mybatis:3.4.4这个版本没有此类问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。