Preciso saber como eu faço para ativar a exclusão em cascata com o Hibernate. Coloco o atributo cascade=“delete-orphan” nas tags dos relacionamentos, porém quando eu vou excluir um Cliente, por exemplo, aparece um erro relacionado a chave estrangeira de Compras (1xN com Cliente).
Qual é a forma correta de fazer isso para many-to-many, one-to-many e one-to-one. Estou fazendo com hbm.xml. Existe mais alguma coisa a ser feita além da tag?
cascade=“none” não poderia ser porque o que eu quero é exatamente o contrário: quando eu deletar um cliente, eu quero que todas as compras desse cliente sejam deletadas.
R
roger_rf
Ops, perdão, não li com a devida atenção da primeira vez Para cascatear as exclusões, use “cascade=all” ou “cascade=delete”.
E
EugenioMonteiro
Tudo bem, mas existe alguma regra para esses atributos? Eu devo colocar cascade=“all” em todos os relacionamentos, ou depende da relação?
R
roger_rf
Como em tantas outras coisas da Computação, não há uma regra rígida para isso, tudo depende das características da sua aplicação. Por exemplo, se o Banco de Dados já está configurado para cascatear exclusões executadas em uma determinada tabela, NÃO se deve configurar no Hibernate a exclusão em cascata para essa tabela. Eu, pessoalmente, não uso o cascade do Hibernate - prefiro fazer isso no próprio Banco (usando ON DELETE CASCADE ou triggers).