Oi Pessoal,
Estou com um problema de violação de constraint na minha aplicação. Estou usando atualmente Seam + Hibernate.
O meu cenário é mais ou menos o seguinte.
Tenho uma tabela Carro e outra CarroGrupo, por algum motivo que não posso explicar, essas duas tabelas possuem uma relação Muitos para Muitos o que provoca o aparecimento de uma terceira chamada CarroGrupoCarro.
Nas 3 tabelas (Carro, CarroGrupo e CarroGrupoCarro) existe a coluna tipo , e uma Constraint que garante que se houver uma relacionamento entre elas que o tipo seja igual em todas.
Meu problema ocorre quando estou editanto CarroGrupo para adicionar novos itens ao grupo. O usuário pode mudar o tipo de CarroGrupo, assim a lista de carros muda e trás só Carros do tipo recém trocado.
Mas como as propriedades da tela são mapeadas diretamente com a Entity CarroGrupo que está Managed (graças ao escopo de conversação do Seam), ele tenta primeiro dar update em CarroGrupo, pois mudei o tipo, para depois remover os dados em CarroGrupoCarro.
Por causa da minha bendita constraint eu ganho uma exception na cara.
Há alguma maneira que eu consiga primeiro remover os relacionamento em CarroGrupoCarro para depois fazer o update em CarroGrupo?
Eu andei pesquisando mas não achei nada. Seria o caso de colocar um @prePersist ou algo do tipo?