Tratar referência quebrada com Hibernate

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?

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

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

	@ManyToOne
	@JoinColumns({
			@JoinColumn(name = "NR_DEP", referencedColumnName = "NR_DEP", updatable = false, insertable = false),
			@JoinColumn(name = "COD_FAMILIA", referencedColumnName = "COD_FAMILIA", updatable = false, insertable = false),
			@JoinColumn(name = "COD_CONTRATO", referencedColumnName = "COD_CONTRATO", updatable = false, insertable = false),
			@JoinColumn(name = "COD_CONVENIO", referencedColumnName = "COD_CONVENIO", updatable = false, insertable = false) })
	private Beneficiario beneficiario;

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

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

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…

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…