Boa tarde!
Pessoal, estou com um problema sério no meu trabalho e gostaria de saber se os colegas têm alguma dica de configuração do Hibernate.
Eu tenho uma tabela que é gerenciada pela minha aplicação que usa dados de outra tabela, sendo que esta é controlada sabe deus por quem e sobre a qual eu não tenho a menor influência - ela é corporativa.
Vamos supor que a minha tabela seja de produto e a outra, fornecedor do produto. Teríamos
[size=9]
PRODUTO
id_produto
desc_produto
id_fornecedor
[/size]
e
[size=9]FORNECEDOR
id_fornecedor
desc_fornecedor
[/size]
Eu mapeei produto com fornecedor usando @ManyToOne. Entregamos o sistema e um dos usuários apontou um erro. Fui verificar e descobri que havia dois produtos no banco de dados cujos fornecedores foram deletados. Perguntei a respeito e a explicação que me deram foi muito sucinta: quando o fornecedor não trabalha mais conosco, nós o deletamos da tabela corporativa e ponto final. Ou seja, posso ter produtos cujos fornecedores não existem mais no banco de dados nem em tabelas de histórico nem persistidos com uma flagzinha de status.
Há alguma configuração do annotations que me permita contornar isso, do tipo ‘se achar um erro, não prossiga o fetch e retorne null’? Do jeito que está, acarreta, compreensivelmente, [color=red]org.springframework.orm.hibernate3.HibernateObjectRetrievalFailureException: No row with the given identifier exists[/color]. Foi solicitado que o hibernate detecte esse problema e o compense trazendo null em vez de disparar um erro.
Eu não posso mexer na tabela corporativa, não posso colocar campos e qualquer solução deverá partir da minha solução.
Alguém tem alguma idéia de como posso fazer isso?
grande abraço,
obrigado,
Joe
PS: tenho idéias de como resolver refazendo produto para só buscar fornecedor quando assim for requistado, mas vai me obrigar a mexer em boa parte da aplicação.
