Coluna da tabela aparece vazia

Precisa fazer um insert tb no instrutor.
Fica mais ou menos isso:

public void inserir(Turma turma) throws SQLException {
        String sql = "INSERT INTO turma( nome,instrutor, datainicio, vaga, dataconclusao) values (?,?,?,?,?)";
        PreparedStatement smt = conexao.pegarConexao().prepareStatement(sql);

        smt.setString(1, turma.getNome());
        smt.setInt(2, turma.getInstrutor().getCodigo());
        smt.setDate(3, new Date(turma.getDataInicio().getTime()));
        smt.setString(4, turma.getVagas());
        smt.setDate(5, new Date(turma.getDataInicio().getTime()));
      
        smt.execute();
        smt.close();

        String sql2 = "INSERT INTO instrutor(<atributos>) values (?,?...)";
        PreparedStatement smt2 = conexao.pegarConexao().prepareStatement(sql2);

        smt2.setInt(1, turma.getInstrutor().getCodigo());
       // Vão todos os dados do instrutor.

        smt2.execute();
        smt2.close();
   }

Experimenta fazer isso… dai acho que funciona

na tabela turma do bando de dados tenho alem das outras colunas, a coluna instrutor, na qual aparece o codigo do instrutor, como ficaria ?, teria que inserir mais colunas com atributos do instrutor?

Sobrecarregue o metodo toString() no instrutor retornando o nome dele.


public String toString()
{
      return nomeDoInstrutor;
}

Ja fiz isso e nada adiantou

Como vc está preenchendo a tabela?

Manda o Model.

  DefaultTableModel dataModel = new DefaultTableModel(dados, colunas);
            TabelaTurma.setModel(dataModel);

Lá onde voce preenche o vetor de dados, onde esta

dados[i][1] = turma.getInstrutor(); 

coloca

dados[i][1] = turma.getInstrutor().getNomeInstrutor(); 

Ja fiz isso tambem e da erro

Acho que thiago está certo. Acredito que você possa resolver fazendo o seguinte:

    private Turma criarTurmaAPartirDoResultSet(ResultSet rsTurma) throws SQLException {  
      
           Turma turma = new Turma();  
           turma.setNome(rsTurma.getString("nome"));  
           turma.setCodigo(rsTurma.getInt("codigo"));  

           Instrutor instrutor = new Instrutor();
           instrutor = instrutorDAO.buscar(rsTurma.getInt("instrutor"));
           turma.setInstrutor(instrutor);  

           turma.setDataInicio(rsTurma.getDate("datainicio"));  
           turma.setVagas(rsTurma.getString("vaga"));  
           turma.setDataConclusao(rsTurma.getDate("dataconclusao"));  
          
     
          return turma;  
      }

Pois como ele disse, você está passando para o método setInstrutor, a referência do objeto que está na classe DAO. Acredito que se você fizer uma nova instância de Instrutor e setar um valor nele, conseguirá resolver o problema.

Não deu certo, mas qui ta informando que o erro ta na linha

dados [i][4] = turma.getInstrutor().getNome;