Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để sử dụng Hibernate Session.doWork (...) cho các điểm lưu / giao dịch lồng nhau?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngày làm việc tiếp theo (Thứ Hai - Thứ Sáu) trong Oracle?

  2. làm cách nào để sử dụng chuỗi kết nối cùng với url jdbc

  3. Làm thế nào để xóa trình kích hoạt trong oracle có chứa ký tự đặc biệt?

  4. ORA-01036:tên / số biến không hợp lệ trong khi gọi hàm được lưu trữ

  5. Cần truy vấn để lấy danh sách các bảng đã sử dụng và chưa sử dụng