Tenho um problema com Hibernate no sistema que estou desenvolvendo. Tenho uma série de objetos relacionados uns aos outros. E no momento de excluir algum objeto, o Hibernate impede essa exclusão devido a esses relacionamentos.
Exemplo: tenho um objeto Usuário que possui dados que estão em um objeto Pessoa Física. E esse objeto Pessoa Física está relacionado com um outro objeto Sócio (que também possui dados dessa PF).
O meu problema é o seguinte: Quando tento excluir o objeto Usuário (não quero excluir a Pessoa Física), ocorre um erro no hibernate que não “entende” que quero excluir apenas o objeto Usuario e não o objeto Pessoa Fisica. O erro que o hibernate dispara é devido ao relacionamento Socio >> Pessoa Fisica.
Acredito que seja apenas um erro nos mapeamentos dos objetos. Alguém saberia me dizer por onde começar a resolver isto?
Olá hgodinho, tente começar pelas tabelas do seu banco para ver se não existe nenhuma constraint impedindo que esse tipo de ação ocorra, depois tente ver no s realcionamentos do seu hibernate qual a ação para o “cascade” de Usuário >> Pessoa física por padrão os bancos (e possívelmente o hibernate se não me falhe a memória) utilizam “restrict” o que(em teoria) vai sempre impedir que sejam excluídos objetos Usuários que tenha PessoasFísicas associadas ele(o básico ). Ok.
Obrigado pela ajuda.
Já analisamos o banco … as configurações das tabelas está correta e aceitaria a exclusão de um objeto Usuario, desde que não tentasse excluir também a Pessoa Fisica que está relacionada a um Sócio.
Acho que o problema vai estar nas configurações do cascade. Abaixo está a tag cascade de Usuário >> Pessoa Fisica. @ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE }) @Cascade( { org.hibernate.annotations.CascadeType.DELETE_ORPHAN, org.hibernate.annotations.CascadeType.SAVE_UPDATE })
O erro disparado é este:
Caused by: java.sql.SQLException: DELETE statement conflicted with COLUMN REFERENCE constraint ‘FK_bas_Socios_bas_PessoasFisicas’. The conflict occurred in database ‘SIG’, table ‘bas_Socios’, column ‘NUMG_PessoaFisica’.