Hibernate - Relacionamentos

Considerando o esquema abaixo:


http://www.cjb.net/images.html?607b2.png

Estou mapeando essa estrutura com hibernate.

Meu problema é quando preciso deletar um material. Teria que deletar todas
as especificacoes que usam o material e todas as pecas que usam essas especificacoes.

Como eu faria isso?

Considerando que eu saiba como fazer essa deleção, como eu faria para atualizar a lista
de pecas do fabricante?

Fabricante { List pecas; ... }

Queria executar isso da forma mais elegante possivel.

Alguem pode me ajudar?

Davi Romero

Procure por on delete cascade. Veja se te atende.

Em que entidades eu usaria o cascade?

por exemplo aqui:

@Entity class Fabricante { @OneToMany(cascade=CascadeType.REMOVE) List pecas; ... }

Nesse lugar já existe o cascade. O problema esta na remoção de uma Material.
Precisava fazer um cascade assim Material -> Especificacoes -> Pecas

O unico jeito de fazer isso é criando uma List de Especificacao em Material e uma List de Peca em Especificacao?

Bom, eu não consegui ver o modelo, você não deve criar essas listas em Material só por criar, apenas se houver esse relacionamento entre as classes.
Eu diria, que na pior das hipóteses, você deleta tudo na mão.

Voce pode ver a figura acessando a url. Caso ela não apareceça é preciso tentar ver denovo. O Cjb sempre coloca propagandas sobre as imagens.

Na verdade o relacionamento existe, mas não havia necessidade de ser mapeado:

Especificacao * ------- 1 Material

Mas a List de Especificacao que eu criaria em Material não me serviria para nada, apenas para facilitar a remoção de um material utilizando cascade.

Pensei em fazer uma busca por todas especificacoes que utilizam o material, que eu quizesse remover, e depois percorrer essa lista buscando todas as
pecas que utilizam as especificacoes listadas. Ai deletava as pecas, as especificacoes e depois os materiais.