Hola Xerelo. Estoy usando Hibernate como implementación de jpa 2.0 para framework de persistencia, y al crear una relación bidireccional de @ManyToMany (que es la relación que necesito para poder compartir una misma lista entre usuarios), tengo que quitar manualmente los enlaces que relacionan un usuario con una lista.
Puedes leer más aquí:
http://stackoverflow.com/questions/1...esponding-join , concretamente en el párrafo:
The groups and users are not combined with each other. I mean, after deleting User1 instance from Group1.users, the User1.groups collections is not changed automatically (which is quite surprising for me),
Pero bueno, al margen de peculiaridades de Hibernate, le seguiré dando vueltas a cómo tratar este problema.
Se me ha ocurrido que una solución menos dura sería que si el usuario intenta borrar una lista, buscar si está compartida con otros usuarios. Si lo está entonces avisar al usuario y dejarle decidir:
a) O borrarla directamente. Evil mode on :)
b) Borrarla de su cuenta, pero dejarla compartida para el resto. Esta opción me parece algo más sensata, e implicaría asignarle esa lista a algún otro usuario. Podría tener un usuario por defecto, digamos el sistema, que sea quien "acoja" las listas huérfanas. Otra opción sería asignársela a cualquier otro usuario que tuviera la lista en sus favoritos.