mọi người. Tôi gặp sự cố khi thay thế các hàng hiện có trong bảng bằng các hàng mới. Tôi sử dụng JPA và PostgreSQL DB. Tôi đang cố gắng xóa tất cả các hàng hiện có và sau đó tạo hàng mới nhưng nhận ngoại lệ: org.postgresql.util.PSQLException: ERROR: giá trị khóa trùng lặp vi phạm ràng buộc duy nhất "user_destination_pk". Tất cả những hành động này nằm trong giao dịch JTA đơn lẻ. Dường như JPA không xóa các hàng trước khi chèn, nhưng tôi không nhận được ngoại lệ xóa ... Bất kỳ trợ giúp nào được đánh giá cao.Thay thế các hàng hiện có bằng các hàng mới gây ra ngoại lệ khóa trùng lặp
Trả lời
Sử dụng phương pháp Hibernate Session.flush()
để xóa (thực thi SQL) các xóa trước khi lưu/thêm các thực thể mới.
Bạn có thể tạo ràng buộc duy nhất là deferrable initially deferred
Tôi cũng nghĩ điều đó lúc đầu nhưng tôi không nghĩ nó sẽ giúp ích gì ở đây. Từ các mô tả có vẻ như nó thực sự JPA không gửi các xóa trước khi gửi các chèn. Tình huống duy nhất mà điều này sẽ giúp ích là khi JPA gửi các lần xóa ** sau khi ** gửi các khoản chèn. –
@a_horse_with_no_name Điều đó không quan trọng trong cùng một giao dịch JTA mặc dù. –
- 1. KnockoutJs với Jquery.tablesorter - Gây ra các hàng trùng lặp
- 2. Xóa các hàng trùng lặp
- 3. Sum() gây ra ngoại lệ thay vì trở về 0 khi không có hàng
- 4. Cách xóa các hàng trùng lặp và cập nhật bảng
- 5. Chọn một hàng từ hàng trùng lặp
- 6. R, có điều kiện xóa các hàng trùng lặp
- 7. Chèn các hàng mới và di chuyển các hàng hiện có bằng OpenXML SDK 2.0
- 8. Ngoại lệ khóa trùng lặp từ Khuôn khổ thực thể?
- 9. Hủy bỏ các hàng trùng lặp trong một bảng không có khóa chính
- 10. Củng cố hàng trùng lặp
- 11. Lọc các hàng trùng lặp dựa trên một sân
- 12. Django bulk_create có bỏ qua các hàng gây ra IntegrityError?
- 13. Xóa các hàng trùng lặp để lại hàng cũ nhất Chỉ có?
- 14. Xóa các hàng "trùng lặp" trong SQL Server 2010
- 15. manyToMany gây ra lỗi nhập trùng lặp
- 16. Làm cách nào để chỉ trả về 1 hàng nếu có nhiều hàng trùng lặp và vẫn trả về các hàng không trùng lặp?
- 17. Loại bỏ các hàng trùng lặp từ một bảng
- 18. Tìm hàng trùng lặp trong excel
- 19. Xử lý các khóa trùng lặp trong một cây AVL
- 20. Đơn đặt hàng trùng lặp Magento
- 21. SQL Xóa hầu hết các hàng trùng lặp
- 22. thả các khóa nước ngoài trùng lặp
- 23. Phát hiện trùng lặp trong Hàng đợi lưu trữ Azure
- 24. find_or_initialize_by trên liên kết has_many gây ra lỗi trùng lặp
- 25. Cách phát hiện hàng trùng lặp trong bảng SQL Server?
- 26. Hàng loạt để xóa các hàng trùng lặp khỏi tệp văn bản
- 27. Tìm hàng trùng lặp với PostgreSQL
- 28. xóa các hàng trùng lặp và cần giữ một hàng từ tất cả chúng trong mysql
- 29. Xóa hàng trùng lặp trong Django DB
- 30. Xóa hàng trùng lặp và giữ một hàng
Cảm ơn bạn, tôi nghĩ về flush(), nhưng tôi đoán Nó kết thúc giao dịch DB. Tôi có đúng không? Tôi không muốn xóa, không chắc chắn rằng hàng mới là tốt. – damluar
gọi flush() không hoàn thành giao dịch (mặc dù cam kết giao dịch thực hiện ngầm hoàn toàn()), nó chỉ làm cho Hibernate thực hiện SQL để đưa db vào cùng trạng thái như phiên. – araqnid
cảm ơn bạn, bây giờ rõ ràng là – damluar