Hibernate - on-delete=cascade

Olá amigos!

Estou implementando uma aplicação na qual tenho registros que precisam necessariamente de eventos em cascata para manter a coesão da base de dados.
Exemplo:
Tenho a classe Agencia e a classe Conta. No XML da classe Agencia tenho o seguinte:

    <set name="contas"
	cascade="delete-orphan"
	inverse="true">
	<key column="agencia_id" on-delete="cascade"/>
	<one-to-many class="Conta"/>
</set>

E no XML da classe Conta tenho:

     <many-to-one
	name="agencia" 
	column="agencia_id"
	class="Agencia" />

Coloquei tanto o atributo “cascade=delete-orphan” como também na key o atributo “on-delete=cascade”. Estou usando uma base de dados MySQL InnoDB.

O que ocorre é que eu deleto a agencia (usando um session.delete(agencia) seguido de flush e commit) mas as contas relacionadas a ela não sofrem o efeito cascata e permanecem normalmente na base de dados!!

O que pode estar faltando??


Daniel Adornes
SCJP 5.0

tbm ja tive esse problema com o MySQL…

acredito q o MySQL nao tenha suporte a isso…

Nao cheguei a fazer nada com MySQL, mas quando você fez o relacionamento… vc colocou cascade on delete ?

tenta por “all-delete-orphan” ao inves de “delete-orphan”

Bah, valeu DarkSeid, vou alterar e testar aqui!

Agora, sobre o que o simundi e o denis_arruda mencionaram com relação à definição das Foreign Keys no MySQL, o Hibernate não independe disso?


Daniel Adornes
SCJP 5.0

infelizmente me parece q nao independe…