错误信息
09:09:46,828 WARN JDBCExceptionReporter:77 - SQL Error: 544, SQLState: S0001
09:09:46,828 ERROR JDBCExceptionReporter:78 - 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 't_user' 中的标识列插入显式值。
org.hibernate.exception.SQLGrammarException: could not insert: [com.cbit.gw.t.TUser]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2267)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2660)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:56)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
at org.hibernate.engine.ActionQueue.executeInserts(ActionQueue.java:132)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:245)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:218)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:456)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:334)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
at com.cbit.gw.dao.TDao.save(TDao.java:25)
at test.Test.main(Test.java:49)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 't_user' 中的标识列插入显式值。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getPrepExecResponse(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source)
at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:23)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2247)
... 36 more
问题解决
自增主键需要xxx.hbm.xml里面把主键类型写好,然后hibernate会自动去给你添加相应主键的值,不用手动加上xxx.setId(3)。
如:
<id name="id" type="int">
<column name="id" />
<generator class="assigned" />
</id>
改成
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
[size=large]
分享到:
相关推荐
`SET IDENTITY_INSERT`允许我们在插入数据时显式地为标识列指定一个具体的值。这在需要控制数据插入顺序或需要在标识列中插入非连续值时非常有用。例如,如果需要在表中插入一条记录,并且希望这条记录的标识列值为...
**结果分析:** 当 `IDENTITY_INSERT` 设置为 `ON` 时,可以通过这种方式批量插入包含 `IDENTITY` 值的记录。 ##### 示例六:指定字段进行批量插入 如果只想插入特定字段的值,可以进一步指定字段列表: ```sql ...
标题和描述中提到的问题是,在尝试为SQL Server表中的标识列插入显式值时,系统返回错误提示:“仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'*'中的标识列指定显式值”。这个错误意味着我们在没有开启...
而在ASP程序中会返回错误信息: 引用内容 Microsoft OLE DB Provider for SQL Server 错误 ‘80040e14’ 当 IDENTITY_Insert 设置为 OFF 时,不能向表 ‘member’ 中的标识列插入显式值。
**实例3**:如果需要显式地为标识列插入特定值,就需要使用`SET IDENTITY_INSERT`语句。首先,启用标识插入: ```sql Set Identity_Insert identitytable on ``` 然后执行插入操作: ```sql Insert into identity...
总结来说,要向数据库中的标识列插入特定值,必须先开启 `IDENTITY_INSERT`,然后执行插入操作,最后关闭 `IDENTITY_INSERT`。这个过程只应在必要时进行,同时考虑到可能的并发问题和数据冲突。对于大型系统,可能...
1. 当 `IDENTITY_INSERT` 设置为 `ON` 时,不能在同一会话中对同一表再次执行 `SET IDENTITY_INSERT ON`。 2. 如果尝试插入的值已经存在于标识列中,或者超过了该列的最大值,插入操作将失败。 3. 在数据迁移后,...
则在查询分析器里面会返回错误信息: [plain] 引用内容 服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_Insert 设置为 OFF 时,不能向表 ‘member’ 中的标识列插入显式值。 有的情况我们需要手动插入标识...
错误提示"仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'*'中的标识列指定显式值"表明,系统不允许直接对具有自动增长属性的列插入显式值。这是SQL Server的一个安全机制,以防止意外覆盖自动增长序列。...
SET IDENTITY_INSERT 允许将显式值插入表的标识列中。语法为:SET IDENTITY_INSERT [database.[ owner.]] {table } { ON |OFF },其中 database 是指定的表所驻留的数据库名称,owner 是表所有者的名称,table 是...
//如果不包含上述定义,在通过SQL命令插入包含编号值的数据时会出现“当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'Address' 中的标识列插入显式值。”异常。 //注意: // 如果在Code-First模式下的编号...
SQL Server 中数据表往往会设置自增列,常见的比如说 首列的ID列。 往数据表插入新数据的时候,自增列是跳过的,无需插入即会按照设置的自增规则进行列增长...仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为
- **自动生成值**:当插入新行时,如果没有显式指定 `Identity` 列的值,则系统会自动为其分配下一个可用值。 - **递增值**:默认情况下,递增值为 1,但可以通过参数进行调整。 - **语法格式**: - **基本语法*...
标识列与普通列相互转的示例 --创建测试表 CREATE TABLE t1(ID int IDENTITY,A int) GO --插入记录 INSERT t1 VALUES(1) GO --1. 将IDENTITY(标识)列变为普通列 ALTER TABLE t1 ADD ID_temp int GO UPDATE t1 SET ...
SpringMVCDemoThis is just a demo for learningIntelliJ IDEAJDKtomcatSQLServer 2017.2 |...报错:“ 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'user' 中的标识列插入显式值 ”(在 BlogEntity.java 中也是一样)
创建包含标识列的表时,可以在`CREATE TABLE`语句中指定列的数据类型为`INT`(或其他整数类型),并设置`IDENTITY`属性。例如: ```sql CREATE TABLE Students ( ID INT IDENTITY(1,1), Name VARCHAR(50), Age...