Boa tarde pessoal…
To com o seguinte problema: tenho uma tabela X que tem uma chave estrangeira que não é obrigatoria no banco (null), mais quando vou inserir um registro dessa tabela X no banco da erro…Analisei os acontecimentos do Hibernate e acho que ta setando 0 em vez de null no banco de dados e é por isso que dando esse erro ja que o 0 nao pertence a segunda tabela que me fornece a chave estrangeira…Se alguem puder me ajudar ficarei grato…
Posso vero o código da sua classe e a servlet ou o que esta utilizando para a regra?
segue as classes de mapeamento (hbm.xml):
–a coluna que chave estrangeira - trbcSeq
<many-to-one name="tipoReducaoBaseCalculo" class="br.sdg.principal.dominio.TipoReducaoBaseCalculoDTO"
column="trbcSeq" not-null="false" cascade="all"/>
–a coluna que chave estrangeira - trbcSeq
[code] <set name="listaComportamentoTransferencia" inverse="false">
<key column="trbcSeq" not-null="false"/>
<one-to-many class="br.sdg.suprimentos.produto.ComportamentoTransferenciaDTO"/>
</set>[/code]
Observe que eu fiz uma dupla visibilidade…
Na classe quando vou inserir, eu verifico se o meu objeto tem alguma coisa…se nao tiver eu seto ele como NULL…os outros codigos da classe não alteram em nada o funcionamento…RESUMINDAMENTE eu queria fazer com que o Hibernate no momento de inserir na minha tabela que recebe a chave estrangeira, inserisse apenas NULL no campo chave estrangeira…
Atualmente ele esta setando para 0 ao inves de aceitar null…
Qual o tipo de dado que esta utilizando como @id?
Primeiro,
Se um campo é chave, o valor é único e OBRIGATORIAMENTE NOT NULL…
Foreign Key tem que ser chave de uma outra tabela.
Logo, não é possível tu ter uma foreign key com valor NULL
Fernando
Esta enganado amigo, pode receber null sim…
Uma PK pode ser null?? não teria sentido…Posso estar enganado, mas Primary key é única e implicitamente NOT NULL.
Fernando
PK não pode ser null, primary key é obrigatório, mas você pode fazer o relacionamento entre uma tabela e outra, sem que a que a tabela que esta recebendo o relacionamento precise de um valor no campo obrigatoriamente.