1

i'm using java and jpaRepository with SqlServer, when i try to save an entity i get this error:

com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert explicit value for identity column in table 'MY_ENTITY' when IDENTITY_INSERT is set to OFF.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:265) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1662) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:615) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:537) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7417) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3488) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:262) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:237) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:483) ~[mssql-jdbc-9.4.1.jre8.jar:na]
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:na]
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:na]
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final]
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3381) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final]
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3908) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final]
    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:107) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final]
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final]
    at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:478) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final]
    at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684) ~[na:1.8.0-262]

i tried to save directly to save in my database from a sql script and if i write:

SET IDENTITY_INSERT MY_ENTITY ON;

INSERT MY_ENTITY (id, desc, uff) VALUES (6, 'asdasd', 'F'); 
  
set identity_insert MY_ENTITY off;

it works,

i tried with also with a native query but i get always this error, when i'm into the service my method arrive at the end saving all data, but when the method finish, i get the error, it is like i get error when hibernate try to flush the data, any hint?

pom

 <dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.4.1.jre8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>


@Repository
public interface RepositoryDao extends JpaRepository<MyEntity, Long>,       JpaSpecificationExecutor<MyEntity> {}


@Autowired
private RepositoryDao repositoryDao ;

service
@Override
@Transactional
public Boolean myService() throws Exception {
    MyEntity myEntity = new MyEntity();
    myEntity .setDesc("desc);
    myEntity .setUff("uff");
    MyEntity entitySaved = repositoryDao .save(myEntity );
}
  • There is a similar question asked around this: https://stackoverflow.com/questions/452238/hiberate-problems-jdbc-identity-insert-is-set-to-off Kindly try the mentioned solution(s) first. – Aman Apr 06 '22 at 09:07
  • i leave this comment for the future dev: i wrong to map the entity and now it works –  Apr 06 '22 at 09:49
  • Entity Table(name = "MyEntity") public class MyEntity implements Serializable { Id Column(name = "ID", unique = true, nullable = false) GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; –  Apr 06 '22 at 09:49

0 Answers0