1
resposta

Ao clicar em send no isomnia da o erro: Table 'vollmed_api.medicos' doesn't exist

Olá, boa tarde.

Table 'vollmed_api.medicos' doesn't exist

o erro acima acontece quando clico em send no isomnia.

spring.datasource.url=jdbc:mysql://localhost:3306/vollmed_api
spring.datasource.username=root
spring.datasource.password=avAlom264915=+
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

A organização das pastas e formato da tabela

Abaixo é o que esta no pom.xml. Será que tem algo de errado?

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0-M2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>med.voll</groupId>
    <artifactId>api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>api</name>
    <description>API Rest Voll.med</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-mysql</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>
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 Integer crm;
    private Especialidade especialidade;
    @Embedded
    private Endereco endereco;

   public Medico(DadosCadastroMedicos dados){
        this.nome= dados.nome();
        this.email= dados.email();
        this.crm=dados.crm();
        this.especialidade=dados.especialidade();
        this.endereco=new Endereco(dados.endereco());
    }

package med.voll.api.controller;

import med.voll.api.MedicoRepository;
import med.voll.api.medico.DadosCadastroMedicos;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import med.voll.api.medico.Medico;

@RestController
@RequestMapping("medicos")
public class MedicoController {

    @Autowired
    private MedicoRepository repository;

    @PostMapping
    public void controller(@RequestBody DadosCadastroMedicos dados){
        this.repository.save(new Medico(dados));
        System.out.println(new Medico(dados));
    }
}
1 resposta

Olá, Rubens! Tudo bem?

Peço desculpa pela demora em retornar.

O erro "Table 'vollmed_api.medicos' doesn't exist" indica que a tabela 'medicos' que você está tentando acessar não existe no banco de dados 'vollmed_api'.

Primeiramente, verifique se o banco de dados 'vollmed_api' realmente existe e se a tabela 'medicos' está criada nele. Você pode fazer isso através de um cliente MySQL, como o MySQL Workbench ou phpMyAdmin.

Se a tabela não existir, você precisará criá-la. Como você está usando o Spring Boot com JPA, você pode deixar que o próprio Spring crie as tabelas para você. Para isso, adicione a seguinte linha no seu arquivo de propriedades:

spring.jpa.hibernate.ddl-auto=update

Essa configuração fará com que o Hibernate crie automaticamente as tabelas que ainda não existem no seu banco de dados, baseado nas suas classes anotadas com @Entity.

Se a tabela já existir, verifique se o nome da tabela está correto. No seu código, a tabela é referenciada como 'medicos' (em minúsculo). O MySQL é case-sensitive para nomes de tabelas, então 'Medicos' seria diferente de 'medicos'.

Por último, verifique se a sua aplicação está conseguindo se conectar corretamente ao banco de dados. As credenciais de conexão (url, username e password) estão corretas? Seu banco de dados está rodando e acessível?

Espero que essas dicas possam ajudar a resolver o seu problema. Caso tenha mais dúvidas ou questões acerca deste tópico, estarei à disposição para ajudá-lo.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.