java.sql.SQLException: IJ031040
awal tampaknya terkait dengan hasil tertentu selama impor kami. Nanti diganti dengan java.sql.SQLException
yang lain yang melarang pengembalian untuk transaksi terkelola. Tapi saya akhirnya bisa memecahkan masalah dengan mengeluarkan pernyataan SQL asli:
// 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();
}
});
Ini memungkinkan "Transaksi bersarang" dalam transaksi yang lebih besar dan menyelesaikan masalah saya.