Die anfängliche java.sql.SQLException: IJ031040
scheint mit einem bestimmten Ergebnis während unseres Imports in Zusammenhang zu stehen. Sie wurde später durch eine andere java.sql.SQLException
ersetzt die das Rollback für verwaltete Transaktionen verbieten. Aber ich konnte das Problem endlich lösen, indem ich native SQL-Anweisungen ausgab:
// 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();
}
});
Dies ermöglicht eine "verschachtelte Transaktion" innerhalb der größeren und hat meine Probleme gelöst.