1
resposta

Erro ao salvar os dados na tabela

Olá pessoal!!

Está ocorrendo o seguinte erro:

"status": 500,
    "error": "Internal Server Error",
    "trace": "org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement [Unknown column 'zip_code' in 'field list'] [insert into doctor (city,complement,neighborhood,number,street,uf,**zip_code**,crm,document_number,email,general_register,name,specialty_medical,telephone_number) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)]; SQL [insert into doctor (city,complement,neighborhood,number,street,uf,zip_code,crm,document_number,email,general_register,name,specialty_medical,telephone_number) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)]

Contudo, segue a minha classe:

@Embeddable
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Address {

    private String street;
    private String neighborhood;
    private String zipCode;
    private String city;
    private String uf;
    private String complement;
    private String number;

    public Address(DataAddress dataDoctor) {
        this.street = dataDoctor.street();
        this.neighborhood = dataDoctor.neighborhood();
        this.number = dataDoctor.number();
        this.zipCode = dataDoctor.zipCode();
        this.city = dataDoctor.city();
        this.complement = dataDoctor.complement();
        this.uf = dataDoctor.uf();
    }
}

Classe record:

public record DataAddress(String street, String neighborhood, String zipCode,
                          String city, String uf, String complement, String number) {
}

E a tabela criada no banco: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Alguém consegue me ajudar ( a migration rodou lisinha lisinha..rsrsr?

1 resposta

Olá, Philype!

Pelo que você compartilhou, o erro que está ocorrendo é relacionado ao campo 'zip_code'. O banco de dados está retornando um erro porque não consegue encontrar essa coluna na tabela 'doctor'.

Na sua classe Address, você tem um campo chamado zipCode, mas na mensagem de erro, o banco de dados está procurando por um campo chamado 'zip_code'. Isso pode estar acontecendo porque o Hibernate, que é a ferramenta que o Spring Boot usa para mapear as classes para as tabelas do banco de dados, por padrão, usa a estratégia de nomenclatura de colunas PhysicalNamingStrategyStandardImpl, que espera que os nomes das colunas estejam em snake_case (ou seja, 'zip_code' em vez de 'zipCode').

Para resolver este problema, você pode alterar o nome do campo na sua classe para corresponder ao nome da coluna no banco de dados. Isso pode ser feito adicionando a anotação @Column ao campo zipCode na sua classe Address e especificando o nome correto da coluna, assim:

@Column(name = "zip_code")
private String zipCode;

Dessa forma, o Hibernate saberá que o campo zipCode na classe Address corresponde à coluna 'zip_code' na tabela 'doctor'.

Lembre-se de verificar se o mesmo problema não está acontecendo com outros campos da sua classe. Se estiver, você pode usar a mesma solução para corrigi-los.

Espero ter ajudado e bons estudos!