Problemas no FormattedField

Gente, estou tendo problemas na construção da minha interface grafica, eu preencho todos os campos normalmente mas quando chega no campo prazo, eu digito a data e ela simplesmente SOME, não fica ali quando eu saio do campo, fica totalmente vazio, diferente dos outros que quando eu digito fica ali, alguém tem alguma solução por favor?

Eu tentei por o dado data por ultimo e ja salvar pra ver se eu salvava com sucesso mas deu um erro que pode ser uma pista

mas eu não achei nada q podia ser nulo no meu codigo. mandando a lista

package model;

import java.util.Date;

public class Task {
   private int id;
   private int idProject;
   private String name;
   private String notes;
   private String description;
   private boolean isCompleted;
   private Date deadline;
   private Date createdAt;
   private Date updatedAt;

    public Task(int id, int idProject, String name, String notes, String description, boolean isCompleted, Date deadline, Date createdAt, Date updatedAt) {
        this.id = id;
        this.idProject = idProject;
        this.name = name;
        this.notes = notes;
        this.description = description;
        this.isCompleted = isCompleted;
        this.deadline = deadline;
        this.createdAt = createdAt;
        this.updatedAt = updatedAt;
    }
    
    public Task(){
        this.createdAt = new Date();
        
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getIdProject() {
        return idProject;
    }

    public void setIdProject(int idProject) {
        this.idProject = idProject;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNotes() {
        return notes;
    }

    public void setNotes(String notes) {
        this.notes = notes;
    }
    

    public boolean isIsCompleted() {
        return isCompleted;
    }

    public void setIsCompleted(boolean isCompleted) {
        this.isCompleted = isCompleted;
    }

    public Date getDeadline() {
        return deadline;
    }

    public void setDeadline(Date deadline) {
        this.deadline = deadline;
    }

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    public Date getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(Date updatedAt) {
        this.updatedAt = updatedAt;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "Task{" + "id=" + id + ", idProject=" + idProject + ", name=" + name + ", notes=" + notes + ", description=" + description + ", isCompleted=" + isCompleted + ", deadline=" + deadline + ", createdAt=" + createdAt + ", updatedAt=" + updatedAt + '}';
    }
      
package model;
import java.util.Date;
public class Project {
    
    private int id;
    private String name;
    private String description;
    private Date createdAt;
    private Date updateAt;

    public Project(int id, String name, String description, Date createdAt, Date updateAt) {
        this.id = id;
        this.name = name;
        this.description = description;
        this.createdAt = createdAt;
        this.updateAt = updateAt;
    }

    public Project() {
        this.createdAt = new Date();
        this.updateAt = new Date();
    } 

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    public Date getUpdateAt() {
        return updateAt;
    }

    public void setUpdateAt(Date updateAt) {
        this.updateAt = updateAt;
    }

    @Override
    public String toString() {
        return "project{" + "id=" + id + ", name=" + name + ", description=" + description + ", createdAt=" + createdAt + ", updateAt=" + updateAt + '}';
    }


 private void jPanelToolBarSaveMouseClicked(java.awt.event.MouseEvent evt) {                                               
        // TODO add your handling code here:
        
        try {
           Task task = new Task();
          
           task.setIdProject(3);
           
           task.setName(jTextFieldName.getText());
           task.setDescription(jTextAreaDescription.getText());
           task.setNotes(jTextAreaNotes.getText());
           task.setIsCompleted(false);
           
           SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
           Date deadline = null;
           deadline = dateFormat.parse(jFormattedTextFielddeadline.getText());
           task.setDeadline(deadline);
           
           controller.save(task);
           
           JOptionPane.showMessageDialog(rootPane, "Tarefa salva com sucesso");           
           
        } catch (Exception e) {
            JOptionPane.showMessageDialog(rootPane, e.getMessage());
        }
        this.dispose();
    }                

EU LITERALMENTE, N SEI O QUE FAZER PQ N ACHEI NADA NO MEU CODIGO Q PODE TA NULO, HEELP :frowning: :frowning:

Coloca para imprimir a stacktrace completa para ajudar a investigar. Altere esse catch:

} catch (Exception e) {
  e.printStacktrace(); // inclua essa linha para a stacktrace aparecer no console da IDE
  JOptionPane.showMessageDialog(rootPane, e.getMessage());
}

O atributo updatedAt da classe Task está null

então eu coloco um 0?
no setupdateAt this.updateAt = 0

Brigado, era de fato o update ta nulo, eu não sei o que fazer nele, tentei por um return 0 e deu errado kkk, pode me ajudar pfvr

E dá pra setar 0 em um campo do tipo Date? Você fez isso com o createdAt?

Na verdade se esse campo não foi setado, você nem deveria ler ele.

Consegui dar um jeito aqui, que deu até certo, eliminei o erro, pus uma condicional que até funcionou
if(updatedAt == null){ return new Date(); } return updatedAt;

fiz a mesma coisa com o createdAt pra não ter erro mas vir aqui que tem um outro bug no meu banco de dados


Consultei o código e infelizmente não vi erro, se puder me dar uma luz.

basicamente só tem isso ai

 statement.execute();
          } catch (Exception ex) {
              throw new RuntimeException("Erro ao salvar a tarefa " + ex.getMessage(), ex);
          } finally {
              ConnectionFactory.closeConnection(connection);                          
          }

Posta o fonte do método save que é onde o erro acontece.

Pela descrição do erro você está tentando acessar uma coluna inválida do ResultSet

Heey, dsclp a demora, aqui o metodo

public void save(Task task) throws SQLException{

    String sql = "INSERT INTO tasks (idproject" 
            + "name, "
            + "description, "
            + "completed, "
            + "notes, "
            + "deadline, "
            + "createdAt, "
            + "updateAt) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
    
    Connection connection = null;
    PreparedStatement statement = null;
    
      try { 
         connection = ConnectionFactory.getConnection();
         statement = connection.prepareStatement(sql);
         statement.setInt(1, task.getIdProject());
         statement.setString(2, task.getName());
         statement.setString(3, task.getDescription());
         statement.setBoolean(4, task.isIsCompleted());
         statement.setString(5, task.getNotes());
         statement.setDate(6, new Date(task.getCreatedAt().getTime()));
         statement.setDate(7, new Date(task.getCreatedAt().getTime()));
         statement.setDate(8, new Date(task.getUpdatedAt().getTime()));

         statement.execute();
      } catch (Exception ex) {
          throw new RuntimeException("Erro ao salvar a tarefa " + ex.getMessage(), ex);
      } finally {
          ConnectionFactory.closeConnection(connection);                          
      }
    `

Na sua query faltou uma vírgula após a coluna idproject, por isso que o número de colunas não bateu com o número de parâmetros passados.