De initiële java.sql.SQLException: IJ031040
lijkt gerelateerd aan een specifieke uitkomst tijdens onze import. Het is later vervangen door een andere java.sql.SQLException
die het terugdraaien van beheerde transacties verbieden. Maar ik kon het probleem eindelijk oplossen door native SQL-instructies uit te geven:
// 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();
}
});
Dit maakt een "geneste transactie" binnen de grotere mogelijk en loste mijn problemen op.