Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Propagação do @Valid

Boa tarde a todos.

No estudo do curso temos nossa classe TopicosController e para indicar uso das validações do BeanValidation e notações aplicadas na classe da requisição utilizamos a anotação @Valid.

Como é o funcionamento do @Valid para objetos relacionados dentro do DTO? Essa propagação de validação acontece automática desde que tenhas as notações de BeanValidation no outro DTO relacionado? As validações via notação que incluí por exemplo no Usuario ou Curso se propagam automaticamente se o @Valid estivesse em um endpoint e recebesse um Topico como argumento? Como seria o comportamento ou o que fazer para obter essas validações também?

@Entity
public class Topico {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String titulo;
    private String mensagem;
    private LocalDateTime dataCriacao = LocalDateTime.now();

    @Enumerated(EnumType.STRING)
    private StatusTopico status = StatusTopico.NAO_RESPONDIDO;

    @ManyToOne
    private Usuario autor;

    @ManyToOne
    private Curso curso;
}

Desde já agradeço a ajuda de todos.

2 respostas
solução!

Oi Carlos,

Para validar também as anotações do Bean Validation de algum relacionamento, precisa adicionar o @Valid no atributo:

@Entity
public class Topico {

    @ManyToOne
    @Valid
    private Usuario autor;

    @ManyToOne
    @Valid
    private Curso curso;
}

Desse jeito a validação será executada em cascata.

Entendi. Agradeço o retorno e a explicação.