Como salvar dado a dado usando estrutura de repetição do tipo For

Boa noite pessoal. Possuo um método para salvar os dados no banco… meu problema é que só está salvando 1 dado…e pelo que percebi é no meu “FOR” que estou errando.

public void adicionaTarefa(Tarefa tarefa, Long cod) {        
        try {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            Date dataInicial= formatter.parse("2016-12-01");
            Date dataFinal = formatter.parse("2016-12-31");
            Calendar start = Calendar.getInstance();
            start.setTime(dataInicial);
            Calendar end = Calendar.getInstance();
            end.setTime(dataFinal);

            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            for (Date date = start.getTime(); start.before(end); start.add(Calendar.DATE, 1), date = start.getTime()) {
              
                String inicio = df.format(date);
                String fim = df.format(date);
                tarefa.setStart(inicio);
                tarefa.setEnd(fim);                

                this.daoFactory.getTarefaDao().salva(tarefa);
            }

        } catch (Exception ex) {
           System.out.println(ex)
        }       
        result.redirectTo(this).lista();
    }

Meu problema é que quando vou no banco, só está salvo os dados relativo a data de “2016-12-31” e não de “2016-12-01 a 2016-12-31” .

Poderiam me dar uma sugestão de como salvar esse laço de repetição um a um?

Eu acho que o seu problema nao esta no laço for e sim em como vc salva essa tarefa

Mostre o que o seu DAO faz.

eu acho que o que acontece é: vc esta fazendo update na mesma tarefa ao inves de criar uma nova.

Olá @OpiHa ! Você só esqueceu do List e do add … é bem simples, faça assim que vai funcionar direitinho:

public void adicionaTarefa(Tarefa tarefa,Long cod) throws ParseException {
        
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date startDate = formatter.parse("2016-12-01");
        Date endDate = formatter.parse("2016-12-31");

        Calendar start = Calendar.getInstance();
        start.setTime(startDate);
        Calendar end = Calendar.getInstance();
        end.setTime(endDate);

        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        List<Tarefa> tarefas= new ArrayList<>();
        for (Date date = start.getTime(); start.before(end); start.add(Calendar.DATE, 1), date = start.getTime()) {           

            String dataInicio = df.format(date);
            String dataFim = df.format(date);
            
            Tarefa t = new Tarefa();
            t.setStart(dataInicio);
            t.setEnd(dataFim);
           
            tarefas.add(t);

            for (Tarefa a : tarefas) {
                try {
                    this.daoFactory.getTarefaDao().salva(a);
                } catch (Exception ex) {
                  System.out.println(ex);
                }
            }
        }       
        result.redirectTo(this).lista();
    }

Boa semana!!!

nesse exemplo os argumentos do adicionaTarefa são completamente inuteis… o que vcs andam bebendo?

@gtalkSP valeu minha irmã… realmente não me atentei a isso, sou fraco nisso. Funcionou mesmo e “direitinho” como você disse rsrsrs ! Para você uma ótima semana também e muito obrigado por me ajudar, sua ajuda foi muito válida!
Obrigado