2012-01-02 18 views
5

Tôi sử dụng plugin lõi-bảo mật lõi trong ứng dụng của mình. lớp người sử dụng tôi mở rộng SecUser và không có gì khác được thực hiện đó có thể là khác thường Khi cố gắng để xóa một người dùng i nhận được lỗi sauvi phạm ràng buộc toàn vẹn khi xóa đối tượng người dùng sử dụng các lớp lõi bảo mật mùa xuân

| Lỗi 2012-01-02 19: 54: 57,277 ["http-bio-8080" -exec-10] L ERI sử dụng.JDBCExceptionReporter - Vi phạm ràng buộc toàn vẹn tham chiếu: "FK6630E2AB3FFA32A: PUBLIC.SEC_USER_SEC_ROLE KEY NGOÀI (SEC_USER_ID) TÀI LIỆU THAM KHẢO PUBLIC.SEC_USER (ID)"; Câu lệnh SQL: xóa khỏi sec_user trong đó id =? và phiên bản =? [23003-147]
| Lỗi 2012-01-02 19: 54: 57,294 ["http-bio-8080" -exec-10] ERROR events.PatchedDefaultFlushEventListener - Không thể đồng bộ hóa trạng thái cơ sở dữ liệu với phiên

Gây ra bởi JdbcSQLException: Vi phạm ràng buộc toàn vẹn tham chiếu: " FK6630E2AB3FFA32A: PUBLIC.SEC_USER_SEC_ROLE KEY NGOÀI (SEC_USER_ID) TÀI LIỆU THAM KHẢO PUBLIC.SEC_USER (ID) "; Câu lệnh SQL: xóa khỏi sec_user trong đó id =? và phiên bản =? [23003-147]

bất kỳ ý tưởng tại sao tôi nhận được các hành vi vi phạm integrtiy chế

Trả lời

9

Lý do mà bạn đang nhận được ngoại lệ vi phạm toàn vẹn là vì thực tế rằng an ninh mùa xuân tạo ra một bảng ngã ba SEC_USER_SEC_ROLE giữa SEC_USER và các bảng SEC_ROLE (người dùng có thể có nhiều vai trò và ngược lại). Để xóa đối tượng người dùng, bạn có thể sử dụng mã sau:

Collection<SecUserSecRole> userRoles = SecUserSecRole.findAllBySecUser(yourUserObject); 
    userRoles*.delete(); 
    user.delete(); 
+0

Rất cám ơn :) Nó hoạt động hoàn hảo – Iman

+0

cảm ơn! nó cũng làm việc cho tôi! – JPerk

Các vấn đề liên quan