2012-01-02 39 views
5

Uso el complemento spring-security-core en mi aplicación. Mi clase de usuario se extiende SecUser y nada más se hace que podrían estar fuera de lo común Al intentar eliminar un usuario me sale el siguiente errorviolación de la restricción de integridad al eliminar el objeto de usuario que utiliza las clases spring-security-core

| Error 2012-01-02 19: 54: 57,277 ["http-bio-8080" -exec-10] ERROR util.JDBCExceptionReporter - Integridad de restricción de integridad referencial: "FK6630E2AB3FFA32A: PUBLIC.SEC_USER_SEC_ROLE FOREIGN KEY (SEC_USER_ID) REFERENCES PUBLIC.SEC_USER (CARNÉ DE IDENTIDAD)"; Instrucción SQL: delete from sec_user where id =? y version =? [23003-147]
| Error 2012-01-02 19: 54: 57,294 ["http-bio-8080" -exec-10] ERROR events.PatchedDefaultFlushEventListener - No se pudo sincronizar el estado de la base de datos con la sesión

Causado por JdbcSQLException: violación de restricción de integridad referencial: " FK6630E2AB3FFA32A: PUBLIC.SEC_USER_SEC_ROLE FOREIGN KEY (SEC_USER_ID) REFERENCES PUBLIC.SEC_USER (ID) "; Instrucción SQL: delete from sec_user where id =? y version =? [23003-147]

idea de por qué me sale las violaciónes integrtiy restricción

Respuesta

9

La razón de que está recibiendo la excepción integridad violación es debido al hecho de que la seguridad de resorte crea una tabla de unión entre el SEC_USER_SEC_ROLE SEC_USER y tablas SEC_ROLE (un usuario puede tener múltiples roles y viceversa). Para eliminar el objeto de usuario, puede utilizar el siguiente código:

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

Muchas gracias :) Funcionó perfectamente – Iman

+0

gracias! ¡Funcionó para mí también! – JPerk

Cuestiones relacionadas