mybatis insert的时候中获取自动增长列的 时候报的错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis insert的时候中获取自动增长列的 时候报的错相关的知识,希望对你有一定的参考价值。

org.springframework.jdbc.UncategorizedSQLException: Error getting generated key or setting result to parameter object. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。
; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; 必须执行该语句才能获得结果。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:346)
at $Proxy17.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:231)
at tq365.dao.baidu.BaiduAdGroupDao.addAdGroupToChoosenCamp(BaiduAdGroupDao.java:87)
at tq365.service.baidu.BaiduAdGroupService.aopAddAdGroupToChoosenCamp(BaiduAdGroupService.java:116)
服务器重新启动一下就不会有这个问题了!估计不是代码问题!郁闷!!!!跪求原因!

你看你用的是什么数据库了,Oracle与 mysql、Sqlserver的自动增长键设置是不一样的 参考技术A useGeneratedKeys="true" keyProperty="userId" keyColumn="GENERATED_KEY"

用这个就oK了
参考技术B 映射语句和实体类贴出来看下呀,追问

呵呵,不是映射问题!映射这里没有写,它也会自动匹配的,(实体于字段要一致)
是因为mybatis的批量添加的事务没有结束前自增长列是不会返回的!
excutorType有多种的我们一般的默认的是单条sql与数据库交互的
(网上看了下这种批量处理的事务最好手动的写!)

参考技术C 本人遇到同样的问题,郁闷,求原因...

SQL获取刚插入的记录的自动增长列ID的值

假设表结构如下:

CREATE TABLE TestTable

(

  id int identity,

  CreatedDate datetime

)

 

SQL2005获得新增行的自动增长列的语句如下:

insert into TestTable (CreatedDate)  output  inserted.id  values (getdate())

 

SQL2000获得新增行的自动增长列的语句如下:

insert into TestTable (CreatedDate)  values (getdate())

select @@IDENTITY

 

在C#中使用ExecuteScalar()方法获得第一行第一列的值(即自增id):

object val = cmd.ExecuteScalar();

以上是关于mybatis insert的时候中获取自动增长列的 时候报的错的主要内容,如果未能解决你的问题,请参考以下文章

Mysql中怎样得到最新insert的一行数据的自动增长列?

SQL获取刚插入的记录的自动增长列ID的值

Mybatis获取插入记录的自增长ID

mybatis怎样批量插入数据到oracle,就算id自动增长问题

Mybatis获取插入记录的自增长ID(转)

sql插入数据问题