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

[Dúvida] Ajustes no Script para compilar

Tive problemas para atualizar os dados do paciente, percebi que se a record DadosAtualizacaoPaciente estiver assim:

public record DadosAtualizacaoPaciente(
        @NotNull
        Long id,
        String nome,
        String telefone,
        @Valid DadosEndereco endereco) {
}

Com o @Valid nos DadosEndereco, quando tento atualizar os dados pelo Insomnia, exemplo o nome do paciente, retorna o erro 400. São 174 linhas da descrição do retorno do erro, mas basicamente ele ignora essa linha de comando do public void atualizarInformacoes da classe Paciente

if (dados.endereco() != null) {
            this.endereco.atualizarInformacoes(dados.endereco());
        }

e retorna todos os erros referente ao impedimento de campo em branco 'NotBlank' do endereço.

Mas quando retiro o @Valid, ficando assim:

public record DadosAtualizacaoPaciente(
        @NotNull
        Long id,
        String nome,
        String telefone,
        DadosEndereco endereco) {
}

Ficando igual ao do médico.

public record DadosAtualizacaoMedico(
        @NotNull
        Long id,
        String nome,
        String telefone,
        DadosEndereco endereco) {
}

Ele funciona.

3 respostas

Oi!

Se tiver o @Valid no atributo DadosEndereco, as validações dentro do record DadosEndereco serão executadas automaticamente.

Se no seu projeto você quer que os dados do endereço sejam obrigatŕoios na atualização, então precisa deixar o @Valid.

Bons estudos!

Professor Rodrigo, obrigado pelo esclarecimento, eu compreendo a utilização do @Valid no caso do cadastramento, mas na atualização acho desnecessário, visto que isso exigiria colocar os dados de endereço em uma atualização só do nome ou só do telefone.

O exemplo com o @Valid é como sugerido pelo instrutor, mas eu prefiro sem que é a forma como foi ensinada durante o curso no caso da atualização do médico.

Só por curiosidade, já teve algum caso em que o senhor teve que utilizar o @Valid para atualização de dados em um projeto e porque? Visto que isso parece impor um preenchimento de campos de forma desnecessária.

solução!

Isso na realidade vai depender mais das regras do projeto, pois cada funcionalidade pode ter campos específicos para serem atualizados, outras podem permitir que todos sejam atualizados, etc.

Bons estudos!