Tenho 3 tabelas para um relacionamento N x N
Usuario -> Perfil_Usuario <- Perfil
O mapeamento esta assim:
Usuario.java
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "usuarioList")
private List<Perfil> perfilList;
Perfil.java
@JoinTable(name = "usuario_perfil", joinColumns = {
@JoinColumn(name = "PERFIL_ID", referencedColumnName = "PERFIL_ID")}, inverseJoinColumns = {
@JoinColumn(name = "USU_ID", referencedColumnName = "USU_ID")})
@ManyToMany(cascade = CascadeType.ALL)
private List<Usuario> usuarioList;
Quando adiciono um item ao list, ele é inserido no banco normalmente, mas quando eu removo um item e uso o merge, os dados continuam no banco de dados, como faço para que quando eu remover um item do list ele tbm seja removido no banco de dados?