java.sql.SQLException: IJ031040
dường như liên quan đến một kết quả cụ thể trong quá trình nhập của chúng tôi. Sau đó, nó đã được thay thế bằng một java.sql.SQLException
khác cấm hoàn nguyên cho các giao dịch được quản lý. Nhưng cuối cùng tôi có thể giải quyết vấn đề bằng cách phát hành các câu lệnh SQL gốc:
// 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();
}
});
Điều này cho phép một "Giao dịch lồng nhau" trong giao dịch lớn hơn và giải quyết vấn đề của tôi.