Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

JPA SET IDENTITY_INSERT non funziona

Questo e questo mi hanno aiutato e l'ho fatto funzionare come di seguito.

Anche da questo collegamento Ho ricevuto la risposta che JPA non supporterà il funzionamento DDL.

Se qualcuno può aggiungere a questa risposta, anche quello sarà fantastico.

EntityTransaction tx = entityManager.getTransaction();

try {
// entitiesMap hold the entity class/table name pairs which have autoincrement primary keys in the sql server database
if(entitiesMap.containsKey(entityName)){
    String tableName = entitiesMap.get(entityName);
    Session session = (Session) entityManager.getDelegate();
    session.connection().createStatement().execute("SET IDENTITY_INSERT [dbo]." + tableName + " ON");
}

tx.begin();
entityObject = jpaTemplate.merge(entity);
tx.commit();

if(entitiesMap.containsKey(entityName)){
    String tableName = entitiesMap.get(entityName);
    Session session = (Session) entityManager.getDelegate();
    session.connection().createStatement().execute("SET IDENTITY_INSERT [dbo]." + tableName + " OFF");
}

return entityObject;
} catch (Exception e) {
}finally{
}