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.