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

erro na hora de cadastrar com o numero

na hora de dar send no insomnia tá dando um erro 500:

"message": "could not execute statement; SQL [n/a]",
    "path": "/medicos"

classe medicos:

package med.voll.api.medico;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.voll.api.endereco.Endereco;

@Table(name = "medicos")
@Entity(name = "Medico")
@Getter
@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;

    private Boolean ativo;

    public Medico(DadosCadastroMedico dados) {
        this.ativo = true;
        this.nome = dados.nome();
        this.email = dados.email();
        this.telefone = dados.telefone();
        this.crm = dados.crm();
        this.especialidade = dados.especialidade();
        this.endereco = new Endereco(dados.endereco());
    }
}

classe dados cadastro:

package med.voll.api.medico;

import jakarta.validation.Valid;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import med.voll.api.endereco.DadosEndereco;

public record DadosCadastroMedico(
        @NotBlank
        String nome,
        @NotBlank
        @Email
        String email,

        @NotBlank
        String telefone,
        @NotBlank
        @Pattern(regexp = "\\d{4,6}")
        String crm,
        @NotNull
        Especialidade especialidade,

        @NotNull @Valid DadosEndereco endereco) {
}

e o comando sql:

alter table medicos add telefone varchar(20) not null;
5 respostas

Oi Thiago!

Posta aqui a exception que está ocorrendo

java.sql.SQLSyntaxErrorException: Unknown column 'ativo' in 'field list'

o atributo ativo do médico nao tá no meu migration v1, mas eu consegui cadastrar os dois primeiros médicos antes de adicionar o telefone, só tá dando esse erro agora.

o sql v1:

create table medicos(

    id bigint not null auto_increment,
    nome varchar(100) not null,
    email varchar(100) not null unique,
    crm varchar(6) not null unique,
    especialidade varchar(100) not null,
    logradouro varchar(100) not null,
    bairro varchar(100) not null,
    cep varchar(9) not null,
    complemento varchar(100),
    numero varchar(20),
    uf char(2) not null,
    cidade varchar(100) not null,

    primary key(id)

);
solução!

Ta faltando a coluna ativo na tabela medicos. Essa coluna não foi adicionada na migration V1, pois foi mostrada no curso apenas na aula de exclusão lógica.

Verifica suas outras migrations se tem a alteração da tabela para inclusão dessa coluna.

Era isso mesmo, eu adicionei pelo MySQL command line;

ALTER TABLE medicos ADD ativo BIT not null;

preciso alterar algo no resto do código?

Blz então. No código você já adicionou o atributo, então deve funcionar certinho.