Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

JPA SET IDENTITY_INSERT funktioniert nicht

Dies und dies haben mir geholfen und ich habe es wie folgt zum Laufen gebracht.

Auch aus diesem verlinken Ich habe die Antwort erhalten, dass JPA den DDL-Betrieb nicht unterstützt.

Wenn jemand diese Antwort ergänzen kann, wäre das auch großartig.

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