Първоначалното java.sql.SQLException: IJ031040
изглежда свързано с конкретен резултат по време на нашия импорт. По-късно е заменен с друго java.sql.SQLException
които забраняват връщането назад за управлявани транзакции. Но най-накрая можех да реша проблема, като издадох собствени SQL изрази:
// 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();
}
});
Това позволява „вложена транзакция“ в рамките на по-голямата и реши проблемите ми.