2012-01-02 16 views
5

Uso il plug-in spring-security-core nella mia applicazione. mia classe utente estende SecUser e nient'altro viene fatto che potrebbe essere fuori dal comune Quando si tenta di eliminare un utente ottengo il seguente erroreviolazione del vincolo di integrità durante l'eliminazione dell'oggetto utente che utilizza le classi di base spring-security

| Errore 2012-01-02 19: 54: 57,277 ["http-bio-8080" -exec-10] ERRORE util.JDBCExceptionReporter - Violazione del vincolo di integrità referenziale: "FK6630E2AB3FFA32A: PUBLIC.SEC_USER_SEC_ROLE FOREIGN KEY (SEC_USER_ID) REFERENZE PUBLIC.SEC_USER (ID) "; Istruzione SQL: eliminazione da sec_user dove id =? e versione =? [23003-147]
| Errore 2012-01-02 19: 54: 57,294 ["http-bio-8080" -exec-10] ERROR events.PatchedDefaultFlushEventListener - Impossibile sincronizzare lo stato del database con la sessione

Causata da JdbcSQLException: violazione del vincolo di integrità referenziale: " FK6630E2AB3FFA32A: PUBLIC.SEC_USER_SEC_ROLE FOREIGN KEY (SEC_USER_ID) REFERENCES PUBLIC.SEC_USER (ID) "; Istruzione SQL: eliminazione da sec_user dove id =? e versione =? [23003-147]

qualche idea del perché ottengo le violazioni dei vincoli integrtiy

risposta

9

La ragione per cui si stanno ottenendo l'eccezione violazione di integrità è a causa del fatto che la sicurezza la primavera crea una tabella di giunzione tra il SEC_USER_SEC_ROLE SEC_USER e le tabelle SEC_ROLE (un utente può avere più ruoli e viceversa). Per eliminare l'oggetto utente è possibile utilizzare il seguente codice:

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

Molte grazie :) Ha funzionato perfettamente – Iman

+0

grazie! ha funzionato anche per me! – JPerk

Problemi correlati