Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

JPA SET IDENTITY_INSERT não está funcionando


Isso e este me ajudaram e eu tenho isso funcionando como abaixo.

Também deste ligação Recebi a resposta de que o JPA não suportará a operação DDL.

Se alguém puder adicionar a esta resposta, isso também será ótimo.
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{
}