Tratar referência quebrada com Hibernate  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
Eldius
Entusiasta Java

Membro desde: 24/01/2008 21:37:17
Mensagens: 21
Offline

Olá, pessoal, beleza?

Estou tendo alguns problemas aqui devido ao fato de uma entidade (tabela) autorizacao que referencia um beneficiario, um beneficiário pode ser removido mas o histórico de autorizações deve ser mantido, por isso não há referência de integridade (foreign key) entre as entidades.

O problema é que quando eu faço a busca o Hibernate lança uma exception e aborta tudo... Alguém sabe como eu posso ignorar isso e seguir em frente sem precisar remover a referência entre os objetos?

O mundo precisa de mais gênios humildes, pois nós estamos morrendo.
drsmachado
GUJ Expert

Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline

E a propriedade nullable, está como?
Que relacionamento está utilizando?

Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".

Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM
Eldius
Entusiasta Java

Membro desde: 24/01/2008 21:37:17
Mensagens: 21
Offline

Opa, drsmachado, beleza?
No momento está mapeado desta forma:



Os atributos insertable e updatable estão como false pois há mais algumas referências que necessitam do atributo COD_CONVENIO.

O mundo precisa de mais gênios humildes, pois nós estamos morrendo.
GraveDigger
JavaEvangelist
[Avatar]

Membro desde: 07/07/2005 13:47:12
Mensagens: 354
Localização: Aracajú
Offline

Olá,

Quando o beneficiário é removido as autorizações ficam com essa(s) coluna(s) null ? Isso atende seus requisitos? Parece que você perderá uma informação importante.

Sugiro ter uma flag para fazer uma pseudo-exclusão, apenas marcando-o como inativo ao invés de removê-lo de fato.

Caso isso não seja possível creio que setar o atributo optional, da annotation @ManyToOne para true deva resolver seu problema.

Att

SCWCD
SCJP

Pedro Henrique Lobato Sena

Eldius
Entusiasta Java

Membro desde: 24/01/2008 21:37:17
Mensagens: 21
Offline

Valeu, GraveDigger, vou tentar essa opção do optional...

Quanto ao funcionamento, ele mantém a referência (os atributos da autorização que referenciam o beneficiário não é alterado)...
E não posso alterar o funcionamento pois esse processo de inclusão/remoção de beneficiários é feita por um sistema que não tenho acesso e esse sistema apaga ao invés de sinalizar como inativo...

O mundo precisa de mais gênios humildes, pois nós estamos morrendo.
Eldius
Entusiasta Java

Membro desde: 24/01/2008 21:37:17
Mensagens: 21
Offline

Foi mal pela demora, só pude testar essa solução (incluir o atributo 'optional=true' na anotação 'ManyToOne') hoje pela manhã... E infelizmente ela não funcionou...
Mas ao menos consegui conversar com o pessoal e eles ficaram de rever o funcionamento do sistema que altera a base de dados.

Mas ainda assim eu gostaria de saber se há uma solução pra isso...

O mundo precisa de mais gênios humildes, pois nós estamos morrendo.
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team