Phải - Tôi muốn xóa (ví dụ: 1.000.000 bản ghi từ cơ sở dữ liệu. Quá trình này mất nhiều thời gian -> thời gian giao dịch hết và không thành công. Vì vậy - tôi xóa chúng theo lô nói 25000 bản ghi cho mỗi giao dịch. Sử dụng mệnh đề giới hạn trên MySQL hoặc ROWNUM trên Oracle. Tuyệt vời tác phẩm này.Xóa hàng loạt/xóa hồ sơ qua Java ORM
Tôi muốn thực hiện điều này theo cách độc lập với cơ sở dữ liệu. Và từ một cơ sở mã Java hiện có sử dụng JPA/Hibernate.
Không may mắn. JPA Query.setMaxResults và setFirstResult không có hiệu lực để ghi 'truy vấn' (ví dụ: xóa). Chọn nhiều thực thể vào bộ nhớ để xóa chúng riêng lẻ rất chậm và câm tôi muốn nói.
Vì vậy, tôi sử dụng truy vấn gốc và quản lý mệnh đề 'giới hạn' trong mã ứng dụng. Thật tuyệt khi đóng gói mệnh đề này trong tệp orm.xml nhưng ... "Chú thích Hibernate 3.2 không hỗ trợ cập nhật/xóa hàng loạt bằng truy vấn gốc". - http://opensource.atlassian.com/projects/hibernate/browse/ANN-469.
Tôi cho rằng đây là vấn đề phổ biến. Bất kỳ ai có giải pháp độc lập về cơ sở dữ liệu tốt hơn?
Tôi nghĩ rằng người hỏi đang thực hiện việc này, nhưng nhận thấy rằng quá trình xóa rất chậm. –