Bom dia galera!
Estou com um problema ao utilizar o mapeamento via annotations do Hibernate, o oneToMany. Vou generalizar o problema para ver se ele fica mais claro.
Quanto uma entidade A possui uma lista de entidades B, deveria em tese realizar as operacoes feitas em A na entidade B de acordo com o atributo no @CascadeType.
Nesse raciocinio tive um problema ao realizar este mapeamento, onde no mapeamento na entidade A com uma lista de entidades B. Quando um objeto da entidade B e deletado sem deletar A, este objeto nao e deletado no banco de dados, apenas a coluna do join e setada para null.
No mapeamento antigo do hibernate, existia o “all-delete-orphan” que falava ao hibernate para deletar todos os elementos orfaos na entidade b. Porém no annotations, este atributo nao existe, onde existe apenas o “DELETE_ORPHAN”, onde mesmo explicitando este atributo no cascadeType ele nao apaga os elementos orfaos.
Vi vários topicos neste proprio forum com pessoas com o mesmo problema, porem nenhuma solucao 100% funcionando, pelos menos eu testei a maioria e nao tive exito. Por isso gostaria de saber se este problema e uma falha do hibernate, ou se neste tipo de mapeamento existe uma particularidade e se esse o caso, porque esta particularidade.
Para efeitos de consulta, segue o codigo de relacionamento entre estas duas entidades, que eu fiz aqui no meu caso especifico:
@OneToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinColumn(name="id_a")
@Cascade({org.hibernate.annotations.CascadeType.DELETE_ORPHAN,org.hibernate.annotations.CascadeType.ALL})
public Collection<EntidadeB> getEntidadesB() {
return entidadesB;
}
Muito obrigado!