1
resposta

[Bug] ERRO ASSOCIAR VARIAVEL var medico : MEDICO - Atualizando dados

Galera,

Dando erro ao tentar colocar var medico :Medico = repository.getReferenceById(dados.id()); na classe MedicoController . Sendo assim, não consigo puxar na classe medico no metodo atualizarInformacoes - public void atualizarInformacoes(DadosAtualizacaoMedico dados) { this.nome=dados.nome() erro dados.nome()

}

package med.voll.api.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;

import jakarta.transaction.Transactional; import jakarta.validation.Valid; import med.voll.api.medico.DadosAtualizacaoMedico; import med.voll.api.medico.DadosCadastroMedico; import med.voll.api.medico.DadosListagemMedico; import med.voll.api.medico.Medico; import med.voll.api.medico.MedicoRepository;

@RestController @RequestMapping("medicos") public class MedicoController { @Autowired private MedicoRepository repository;

 @PostMapping
 @Transactional
public void cadastrar(@RequestBody @Valid DadosCadastroMedico dados) {

     repository.save(new Medico(dados));


}
 @GetMapping
    public Page<DadosListagemMedico> listar(Pageable paginacao) {
        return repository.findAll(paginacao).map(DadosListagemMedico::new);
    }

 @Transactional
 @GetMapping
    public void atualizar(@RequestBody @Valid DadosAtualizacaoMedico dados) {

** var medico :Medico = repository.getReferenceById(dados.id()); medico.atualizarInformacoes(dados); ** }

}


classe medico

@Table(name= "medicos") @Entity(name= "Medicos")

@Getter @Setter @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(of = "id") public class Medico { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String nome; private String email; private String telefone; private String crm; @Enumerated(EnumType.STRING) private Especialidade especialidade; @Embedded private Endereco endereco;

public Medico(DadosCadastroMedico dados) {

    this.nome=dados.nome();
    this.email=dados.email();
    this.telefone=dados.telefone();
    this.crm=dados.crm();
    this.especialidade=dados.especialista();
    this.endereco= new Endereco(dados.endereco());

}

public void atualizarInformacoes(DadosAtualizacaoMedico dados) {
    this.nome=dados.nome();


}

}

1 resposta

Oi Jefferson!

A sintaxe correta é essa:

var medico = repository.getReferenceById(dados.id()); 

Confere também se o record DadosAtualizacaoMedico está assim:

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