Den indledende java.sql.SQLException: IJ031040
synes relateret til et specifikt resultat under vores import. Den er senere blevet erstattet med en anden java.sql.SQLException
der forbyder tilbagerulning for administrerede transaktioner. Men jeg kunne endelig løse problemet ved at udstede native SQL-sætninger:
// Mark the current state as SAVEPOINT...
Session session = this.em.unwrap(Session.class);
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
connection.prepareStatement("SAVEPOINT TRY_POSSIBILITY").executeUpdate();
}
});
//
// Do all the risky changes... verify... decide...
//
// Rollback to SAVEPOINT if necessary!
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
connection.prepareStatement("ROLLBACK TO SAVEPOINT TRY_POSSIBILITY").executeUpdate();
}
});
Dette tillader en "indlejret transaktion" i den større og løste mine problemer.