Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

JPA SET IDENTITY_INSERT ne fonctionne pas

Ceci et ceci m'ont aidé et cela fonctionne comme ci-dessous.

Également à partir de ce lien J'ai reçu la réponse que JPA ne prend pas en charge l'opération DDL.

Si quelqu'un peut ajouter à cette réponse, ce sera super aussi.

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{
}