Den initiala java.sql.SQLException: IJ031040
verkar relaterat till ett specifikt resultat under vår import. Den har senare ersatts med en annan java.sql.SQLException
som förbjuder återställning för hanterade transaktioner. Men jag kunde äntligen lösa problemet genom att utfärda inbyggda SQL-satser:
// 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();
}
});
Detta tillåter en "kapslad transaktion" inom den större och löste mina problem.