Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/07/2008, 01:08
Avatar de Llave
Llave
 
Fecha de Ingreso: abril-2005
Ubicación: Galicia
Mensajes: 52
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Eliminar con Hibernate

A ver si lo he entendido.

Resumiendo... tienes dos entidades: Empresa y usuarios. Si mal no entendi, la relación entre estas dos entidades es N-1 Es decir, un usuario puede tener varias empresas.
Y la idea que tienes al borrar una empresa.. ¿es que esta elimine también al usuario?

Seguramente ahí esté tu problema. Deberías modificar tu esquema de borrado. Te pongo un ejemplo para que veas de lo que hablo.

Supongamos que en Usuarios tenemos 3 usuarios:
- Fulano
- Mengano
- Arrano

Y en Empresas, tenemos 10 empresas en plan:
- Empresa1
- Empresa2
- Empresa3
- ...
- Empresa10

De tal forma que las 8 primeras tienen enlace a Fulano.
Empresa9 a Mengano y Empresa10 a Arrano.

Según tu idea de borrado, empiezas a borrar empresas:

Borras la Empresa1, seguidamente te cargas al usuario Fulano.
---------------------------------
Aquí es donde veo el problema. En este mismo momento, tienes 7 empresas incosistentes en tu base de datos. Ya que Fulano ya no existe y hay 7 empresas que apuntan a donde antes estaba él (Empresa2,..., Empresa8). En el momento en que el sistema acceda al segundo elemento de la tabla empresas y quiera leer "Empresa2", verá que el enlace de usuario apunta a NULL ya que Fulano no existe y romperá.

Creo que es por este motivo que te falla. Corrígeme si no es así. fue lo que entendí leyendo tu post.

Puedes intentar borrar tú, las empresas del usuario a mano y seguidamente cargarte al usuario al final. O si no, ponerle el borrado en cascada al usuario y a partir de la empresa, accedes al usuario y ordenas borrar el usuario (ya se encargará Hibernate de borrar las empresas que lo tengan apuntado).

Espero que se solucione.