Field 'idServidor' doesn't have a default value '

Olá pessoal, estou com uma dúvida que é a seguinte, Tenho a Classe que cadastra o valor uma diária onde possuo quatro chave estrangeiras onde quando executo aparece
a seguinte mensagem Field ‘idServidor’ doesn’t have a default value ’ mas eu possuo sim esse campo no banco de dados que é a chave estrangeira da tabela SERVIDOR, e coloquei um e.printStackTrace(); e aparece o seguinte erro

java.sql.SQLException: Field 'idServidor' doesn't have a default value
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
	at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664)
	at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583)
	at ClassDiaria.incluiDiaria(ClassDiaria.java:153)
	at FNovaDiaria.btnSalvarActionPerformed(FNovaDiaria.java:293)
	at FNovaDiaria.access$400(FNovaDiaria.java:12)
	at FNovaDiaria$3.actionPerformed(FNovaDiaria.java:85)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
	at java.awt.Component.processMouseEvent(Component.java:6288)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6053)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4651)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:616)
	at java.awt.EventQueue$2.run(EventQueue.java:614)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

No aguardo !

Código?
ta usando o que? JPA, hibernate, preparedstatement?

Classe Cadastra Diaria


import java.sql.*;
import java.util.*;
import javax.swing.JOptionPane;
public class ClassDiaria {
    
    public ClassDiaria() {    }
    
    //========================================================
    //========================================================
    // Objetos para receberem os valores das diarias
    //========================================================
    //========================================================
    
   
    private int codigo;
    private String nome;
    private String periodoInicio;
    private String periodoFim;
    private String destino;
    private String relatorio;
    
    private String setor;
    private String objetivo;
    private String observacoes;
    private int qtdDiaria;
    
    //========================================================
    //========================================================
    //Fim da declaração de Objetos
    //========================================================
    //========================================================
    
    
    //========================================================
    //========================================================
    //Passando Valores para os Objetos
    //========================================================
    //========================================================
    
    public void setPegaValDiaria(String _nome, String _periodoInicio, String _periodoFim, String _destino, String _relatorio, String _setor, String _objetivo, String _observacoes, int _qtdDiaria){
      this.nome = _nome;
      this.periodoInicio = _periodoInicio;
      this.periodoFim = _periodoFim;
      this.destino = _destino;
      this.relatorio = _relatorio;
      this.setor = _setor;
      this.objetivo = _objetivo;
      this.observacoes = _observacoes;
      this.qtdDiaria = _qtdDiaria;
    }   
    
    //=================================================================
    //=================================================================
    //Função para receber e pegar o valor do código para fazer o Update
    //=================================================================
    //=================================================================
    
    
     public void setCodigo(int _codigo){
         this.codigo = _codigo;         
     }
    
     public int getCodigo(){
         return this.codigo;
     }
     
     //=======================================================
    //========================================================
    //Pegando valores dos objetos
    //========================================================
    //========================================================
    
    public String getNome(){
        return this.nome;
    }
    
    public String getPeriodoInicio(){
        return this.periodoInicio;
    }
    
    public String getPeriodoFim(){
        return this.periodoFim;
    }
    
    public String getDestino(){
        return this.destino;
    }
    
    public String getRelatorio(){
        return this.relatorio;
    }
    
    public String getSetor(){
        return this.setor;
    }
    
    public String getObjetivo(){
        return this.objetivo;
    }
    
    public String getObservacoes(){
        return this.observacoes;
    }
    
    public int getQtdDiaria(){
        return this.qtdDiaria;
    }
    
    
    //========================================================
    //========================================================
    //Fim pega valores dos objetos
    //========================================================
    //========================================================
    
    
    //==================================================================
    //==================================================================
    //Métodos para receber os valores de nome, periodoSaida, periodoFim
    //Destino para serem tratados na função DeletaDiaria
    //==================================================================
    //==================================================================
   
    
      public void setDeletaDiaria(String _nome, String _periodoInicio, String _periodoFim, String _destino){
      this.nome = _nome;
      this.periodoInicio = _periodoInicio;
      this.periodoFim = _periodoFim;
      this.destino = _destino;
    }  
    
    //========================================================
    //========================================================
    //Função para a conexão com o banco
    //========================================================
    //========================================================
       
   
    Connection con = null;
    Statement stmt = null;
      
    ClassConecta conexao = new ClassConecta();
    ClassAuditoria audita = new ClassAuditoria();  
    
    
    void incluiDiaria(){        
        conexao.conecta();
        try{
            stmt = conexao.con.createStatement();
            String ComandoSql = "insert into TabCadDiaria(nome, periodoInicio, periodoFim, destino, situacao, setor, QtdDiaria, objetivo, obs) values('"+ 
                              getNome() +"','"+ getPeriodoInicio() +"','"+ getPeriodoFim() +"','"+ getDestino() +"','"+ getRelatorio()+"','"+ 
                              getSetor() +"','"+ String.valueOf(getQtdDiaria())+"','"+ getObjetivo() +"','"+ getObservacoes()+"')";
             stmt.executeUpdate(ComandoSql);
            //Insserindo na tabela de Auditoria
            audita.setTxt("Diária Cadastrada: " + getNome() + " com saida - " + getPeriodoInicio() + " e chegada - " + getPeriodoFim());
            audita.incluiAuditoria();
            stmt.close();            
            conexao.con.close();
        }catch(Exception e){ e.printStackTrace();
            JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador: '" + e + "'","ATENÇÃO",JOptionPane.WARNING_MESSAGE);             
        }
      }
    
    //===============================================================
    //===============================================================
    //Método para seleção de Diárias
    //===============================================================
    //===============================================================
    
    
    
    //===============================================================
    //===============================================================
    //Objeto Para receber o valor do comando SQL
    //===============================================================
    //===============================================================
    private String comandoSelecao;
    
    public void setComandoSelecao(String _ComandoSelecao){
        this.comandoSelecao = _ComandoSelecao;
    }
    
    public String getComandoSelecao(){
        return this.comandoSelecao;
    }
    
    
    //========================================================
    //========================================================
    //Método para a entrega de relatório
    //========================================================
    //========================================================
    
void EntregaRel(){
    conexao.conecta();
     try{
            stmt = conexao.con.createStatement();
            System.out.println("Entregando Relatorio"); 
            String comando = "Update TabCadDiaria set situacao = 'ENTREGUE' where idDiaria = "+ getCodigo() +"";
             stmt.executeUpdate(comando);
             audita.setTxt("Diária de Código: " + getCodigo() + " Entregou Relatório");
             audita.incluiAuditoria();
             stmt.close();
             conexao.con.close();
        }catch(SQLException e){
          JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador: '" + e + "'","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
        }   
}

    //========================================================
    //========================================================
    //Método para deletar a diária
    //========================================================
    //========================================================

void DeletaDiaria(){
        conexao.conecta();
     try{
             stmt = conexao.con.createStatement();
             System.out.println("Deletando Diária"); 
             String comando = "Update TabCadDiaria set situacao = 'CANCELADA' where idDiaria = "+ getCodigo() +"";
             stmt.executeUpdate(comando);
             audita.setTxt("Diária Cancelada: " +  getNome() + " Período "+ getPeriodoInicio()+ " à " + getPeriodoFim() + " Destino: "+ getDestino());
             audita.incluiAuditoria();
             stmt.close();
             conexao.con.close();
        }catch(SQLException e){
          JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador: '" + e + "'","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
        }   
}
  
}

    //========================================================
    //========================================================
    //Fim da Classe
    //========================================================
    //========================================================

No Aguardo

esse idServidor é foreign key né?

se for uma foreign key vc tem que passar o valor dela tbm ou desmarque a opção notnull.

É uma foreing key sim, Mas como é que eu passo o valor dela

No aguardo!!!

vc deve declarar tbm as foreign key’s em seu objeto.

se for algo que já está cadastrado no BD faça uma pesquisa antes do insert para buscar a FK.
se for um cascade onde vc vai inserir vários objetos de uma vez insira todos os que vc vai precisar da FK primeiro.

Já está cadastrado como é que eu faço essa pesquisa
Vc teria algum exemplo.
No aguardo!!!