Olá pessoal!
Tenho um relacionamento ManyToMany entra uma entidade pessoa e outra telefone.
Mapeiei na entidade pessoa da seguinte maneira:
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "TB_PESSOA_TELEFONE", joinColumns = @JoinColumn(name = "ID_PESSOA", referencedColumnName = "ID_PESSOA"), inverseJoinColumns = @JoinColumn(name = "ID_TELEFONE", referencedColumnName = "ID_TELEFONE"), uniqueConstraints = @UniqueConstraint(columnNames = {
"ID_PESSOA", "ID_TELEFONE" }))
private List<Telefone> telefones;
Dessa maneira no momento em que eu atualizava esses valores, notei que no banco não deletava o antigo valor da tabela de telefones, ou seja, insere o novo valor e o mapeamento de IDs na tabela do relacionamento mudava para o ID desse novo valor.
Pesquisei um pouco e adicionei a seguinte anotação
E agora após o merge os valores antigos são removidos do banco, gostaria de saber de vocês se eu fiz algo de errado anteriormente, pois acredito que somente com o CascadeType.ALL era o suficiente para atualizar o valor.