Problemas ao remover com JPA - ManyToMany

Tenho 3 tabelas para um relacionamento N x N

Usuario -> Perfil_Usuario <- Perfil

O mapeamento esta assim:

Usuario.java

@ManyToMany(cascade = CascadeType.ALL, mappedBy = &quot;usuarioList&quot;) private List&lt;Perfil&gt; 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&lt;Usuario&gt; 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?