Olá Pessoal,
Montei um projeto para me aproximar o ambito profissional no qual estou inserido com uma api com JEE8 com wildfly 20 e mysql via docker. Estou com o seguinte problema: fiz um relacionamento many-to-many bidirecional, em que ao remover o a entidade mais forte, consigo deletar os relacionamentos da tabela intermediária, mas não remove no primeiro momento a tupla ou o objeto... quando mando pela segunda vez remove porque já não existe relacionamentos. Pela quantidade de coisas que li, seria algum sincronismo em que o commit encerra antes, como estou usando JTA com CDI / EJB controlando as transações , ao mesmo tempo que automatiza, está mascarando algum detalhe. Allguem já pegou um problema parecido?
Na entidade Dica
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "dica_peca", joinColumns = @JoinColumn(name = "dica_id"), inverseJoinColumns = @JoinColumn(name = "peca_id"))
@JsonIgnoreProperties("dicas")
private Set<Peca> pecas = new HashSet<>();
----------------------------------------------------------------------------------------------
na Entidade Peca
@ManyToMany(mappedBy = "pecas", fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
@JsonIgnoreProperties("pecas")
private Set<Dica> dicas = new HashSet<>();
----------------------------------------------------------------------------------
No Dao
public void remove(Long id) {
Dica candidato = em.find(Dica.class, id);
for (Peca peca : candidato.getPecas()) {
candidato.removePeca(peca);
}
em.remove(candidato);
}
-------------------------------------------------------------------------------------------
na entidade Dica :
public void removePeca(Peca peca) {
this.pecas.remove(peca);
peca.getDicas().remove(this);