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?
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?
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
}