1
resposta

Spring boot não gera erro ao passar dia a mais no mÊs

Estou usando o localDate para datas. Mas, quando coloco 31/02 por exemplo, ele salva, mas altera para 28/02. Como corrigir isso para o spring não permitir e lançar um erro?

1 resposta

Olá Kayo, tudo bem?

O comportamento que você mencionou é esperado ao usar o LocalDate no Spring Boot. O LocalDate é uma classe do Java que representa uma data sem informações de horário ou fuso horário. Por padrão, o LocalDate faz a validação automática das datas e ajusta automaticamente datas inválidas, como 31/02, para datas válidas próximas, como 28/02 ou 29/02 em anos bissextos.

Se você deseja que o Spring Boot lance um erro ao tentar salvar uma data inválida, você pode fazer uso das anotações de validação disponíveis no framework.

Uma opção é utilizar a anotação @DateTimeFormat juntamente com a anotação @NotNull no campo LocalDate do seu objeto:

import org.springframework.format.annotation.DateTimeFormat;

public class SeuObjeto {
    @NotNull
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate suaData;

    // getters e setters
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software