[RESOLVIDO] Tabela com duas FKs

Ola ;

Tenho uma Tabela que tem duas FKs e a Classe de Entidade de Banco de Dados faz referencia dessa forma

    @JoinColumn(name = "ID_LIQPARC", referencedColumnName = "ID_LIQPARC", nullable = false)
    @ManyToOne(optional = false)
    private Liqparc idLiqparc;
    @JoinColumn(name = "ID_PARCELA", referencedColumnName = "ID_PARCELA", nullable = false)
    @ManyToOne(optional = false)
    private Parcela idParcela;

O problema eh que ora vou ter ID_LIQPARC e ora ID_PARCELA.

Quando tiver ID_LIQPARC preciso colocar ZERO em ID_PARCELA
Quando tiver ID_PARCELA preciso colocar ZERO em ID_LIQPARC

Como faço isso ???

Agradeco ajuda

Não é possível.
Uma FK deve referenciar uma coluna com valor válido, em outra tabela.
É uma restrição de integridade.

Aliás, ao meu ver, se uma tabela possui uma FK que precisa ser “zerada” em determinada situação, é por que o design do banco ficou errado.
Seria como ter uma herança de pessoa, pessoa_fisica e pessoa_juridica, mas, ao invés das tabelas pessoa_fisica e pessoa_juridica terem uma FK para pessoa, o contrário. Entende o que digo?

Obrigado drsmachado

Tem sentido … Vou rever meu desenho do BD

Por favor, ao postar tópicos, evite usar apenas LETRAS MAIÚSCULAS no título ou no corpo da mensagem.

Não necessariamente. Uma FK pode simplesmente ser NULL. E isso resolve o problema inicial.

[quote=pmlm][quote=drsmachado]
Aliás, ao meu ver, se uma tabela possui uma FK que precisa ser “zerada” em determinada situação, é por que o design do banco ficou errado.
[/quote]

Não necessariamente. Uma FK pode simplesmente ser NULL. E isso resolve o problema inicial.[/quote]
Ok, mas o sentido de FK nos leva a acreditar que, se existe a necessidade de ela apontar a uma outra tabela, não faz sentido ser nula, não acha?
Como o caso que citei, da herança de pessoa. Seria inteligente cadastrar um cliente sem especificar qual o tipo de pessoa que ele é?

Uma tabela pode conter um campo opcional, mas que se for preenchido, deve vir de outra tabela.

Por exemplo, você pode ter um campo “Produto favorito” no cadastro de clientes que deve ser preenchido com a FK do produto que ele prefere de sua empresa, mas que pode ser nulo caso o cliente não tenha preferência declarada.

Claro que situações assim são mais exceções do que regra, e há quem prefira dizer que se a opção “Nenhum” existe, ela deveria estar cadastrada na tabela de produtos.

Ola;

Tive que rever a estrutura de meu BD.

Aboli as DUAS FKs ( pq nao podia manter Integridade Referencial ) e criei Indices para as mesmas colunas

[quote=drsmachado]
Ok, mas o sentido de FK nos leva a acreditar que, se existe a necessidade de ela apontar a uma outra tabela, não faz sentido ser nula, não acha?[/quote]
Qualquer combobox na tua aplicação que não seja obrigatória, vai ser uma FK que pode ser nula na tua BD.