Olá!
estou tentando entender o comportamento do Cascade.ALL em uma de minhas entidades. Estou lidando com menu, submenus e items de menu.
Minha entidade tem uma relação OneToMany com ela mesma, isto é, um item de menu pode ter uma coleção de outros itens de menu. Ao tentar excluir um item de menu que possuía uma coleção de outros itens, ocorria um erro no banco, devido à constraint da Foreign Key.
Anotei o relacionamento com Cascade.ALL e esse problema foi resolvido.
[code] @OneToMany(mappedBy=“subMenuPai”, fetch=FetchType.EAGER, cascade=CascadeType.ALL, orphanRemoval=true)
private Set itensFilhos
entityManager.remove(itemComSubitens); // OK!
[/code]
No entanto, após colocar o Cascade.ALL, não consigo mais excluir um dos subitens isoladamente. Ao executar o código abaixo não é feita a exclusão e nenhum erro é lançado.
Quando retiro o Cascade.ALL o segundo código acima funciona, mas o primeiro lança erro.
Qual seria a maneira correta de lidar com o Cascade nesse caso?