Como resolver esse poblema?Exception in thread "main" java.lang.NullPointerException at controller.ProjectController.save(ProjectController.java:42) at TodoApp2.Main.main(Main.java:29)

public class ProjectController {
     public void save(Project project){
        String sql = "INSERT INTO Projects (name,"
                + "description,"
                + "createdAt,"
                + "updatedAt) VALUES (?,?,?,?)";
        Connection connection = null;
        PreparedStatement statement = null;
        
        try {
            
            //cria uma conexao com o banco
            connection = ConnectionFactory.getConnection();
            //cria um PreparedStament, classe usada para executar a query
            statement = connection.prepareStatement(sql);
            
            statement.setString(1, project.getName());
            statement.setString(2, project.getDescription());
            statement.setDate(3, new Date(project.getCreatedAt().getTime()));
            statement.setDate(4, new Date(project.getUpdatedAt().getTime()));
            //Executa a sql para inserção dos dados
            statement.execute();
        } catch (SQLException ex) {
            throw new RuntimeException("Erro ao salvar a tarefa", ex);
        } finally {
            ConnectionFactory.closeConnection(connection, statement);
                     
        }
    }

Qual é a instrução da linha 42?

statement.setDate(4, new Date(project.getUpdatedAt().getTime()));

Então o project.getUpdatedAt() está retornando null

tenho q colocar oq nele?,sou novato na programação kk

Então não deveria estar fazendo acesso a banco de dados.

Pra que serve a propriedade updatedAt da sua classe?
Pelo nome imagino que seja um objeto Date contendo o momento em que o objeto foi atualizado, se for isso, seta essa data antes de persistir o objeto.

 package model;
import java.util.Date;

/**
 *
 * @author ALEXANDRO
 */
public class Project {
   
    private int id;
    private String name;
    private String description;
    private Date createdAt;
    private Date updatedAt;
    

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

    public Project() {
       this.createdAt =  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 getUpdatedAt() {
        return updatedAt;
    }

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

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

como eu faço pra setar a data?

No seu objeto project, chama o método setUpdatedAt passando o objeto Date desejado

n sei exatamente como faz isso

Cadê o código que chama o método save do seu ProjectController?

package controller;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.Project;
import util.ConnectionFactory;


/**
 *
 * @author ALEXANDRO
 */
public class ProjectController {
     public void save(Project project){
        String sql = "INSERT INTO Projects (name,"
                + "description,"
                + "createdAt,"
                + "updatedAt) VALUES (?,?,?,?)";
        Connection connection = null;
        PreparedStatement statement = null;
        
        try {
            
            //cria uma conexao com o banco
            connection = ConnectionFactory.getConnection();
            //cria um PreparedStament, classe usada para executar a query
            statement = connection.prepareStatement(sql);
            
            statement.setString(1, project.getName());
            statement.setString(2, project.getDescription());
            statement.setDate(3, new Date(project.getCreatedAt().getTime()));
            statement.setDate(4, new Date (project.getUpdatedAt().getTime()));
            //Executa a sql para inserção dos dados
            statement.execute();
        } catch (SQLException ex) {
            throw new RuntimeException("Erro ao salvar a tarefa", ex);
        } finally {
            ConnectionFactory.closeConnection(connection, statement);
                     
        }
    }

Você não entendeu, cadê o código que chama esse método?
Alguém chama esse método passando um objeto Project como parâmetro.

nao é esse aqui? eu fiz o projeto igual do professor

consequi resolver esse erro

so n ta conectando no banco de dados

Ali está a declaração do método.
Pedi para você postar o código que chama aquele método.

Está conectando sim, tanto que o erro está dizendo que não existe a coluna ‘updatedAt’.

1 curtida