Digamos que tengo dos entidades: Grupo y Usuario. Cada usuario puede ser miembro de muchos grupos y cada grupo puede tener muchos usuarios.
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
Ahora quiero eliminar un grupo (digamos que tiene muchos miembros).
El problema es que cuando llamo a EntityManager.remove () en algún grupo, el proveedor de JPA (en mi caso, Hibernate) no elimina filas de la tabla de unión y la operación de eliminación falla debido a restricciones de clave externa. Llamar a remove () en User funciona bien (supongo que esto tiene algo que ver con el lado propietario de la relación).
Entonces, ¿cómo puedo eliminar un grupo en este caso?
La única forma que se me ocurre es cargar todos los usuarios del grupo, luego, para cada usuario, eliminar el grupo actual de sus grupos y actualizar al usuario. Pero me parece ridículo llamar a update () en cada usuario del grupo solo para poder eliminar este grupo.