https://github.com/MarianaFagundes/Api_Gerenciamento_de_Clinicas.git
Já fiz alteração Spring Doc, tentei diversas vezes, vontade de tacar fogo '-'
https://github.com/MarianaFagundes/Api_Gerenciamento_de_Clinicas.git
Já fiz alteração Spring Doc, tentei diversas vezes, vontade de tacar fogo '-'
Oi!
Olhei o seu projeto e nele está faltando criar a interface ConsultaRepoisitory:
package med.voll.api.domain.consulta;
import org.springframework.data.jpa.repository.JpaRepository;
import java.time.LocalDateTime;
public interface ConsultaRepository extends JpaRepository<Consulta, Long> {
boolean existsByPacienteIdAndDataBetween(Long idPaciente, LocalDateTime primeiroHorario, LocalDateTime ultimoHorario);
boolean existsByMedicoIdAndDataAndMotivoCancelamentoIsNull(Long idMedico, LocalDateTime data);
}
Professor, tenho esta interface criada, poderia olhar novamente o projeto por favor?
Blz, era o único problema que tinha.
Tenta rodar a classe main do projeto (ApiApplication
) e veja se vai dar algum erro
Professor quis dizer que essa classe já existia e já acontecia o erro, o mesmo persiste. java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
Esse erro geralmente ocorre com versões nova do Java, como o Java 23.
Verifica nas configurações do seu projeto se está com o Java 17 ou 21 (clique com o botão direito no projeto e vai em: Open Module Settings)
Professor ja estava rodando no 21, apenas ajustei o "Language level", apliquei e salvei e não alterou em nada segue os seguintes erros: java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
Professor alterei para versão 17 e rodou, porem ainda não tenho acesso a localhost, foi recusado http://localhost:8080/swagger-ui/index.html#/
Professor além disso estou com dois erros ao rodar o MedicoRepositoryTest
https://github.com/MarianaFagundes/Api_Gerenciamento_de_Clinicas.git Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select m1_0.id,m1_0.ativo,m1_0.crm,m1_0.email,m1_0.bairro,m1_0.cep,m1_0.cidade,m1_0.complemento,m1_0.logradouro,m1_0.numero,m1_0.uf,m1_0.especialidade,m1_0.nome,m1_0.telefone from medicos m1_0 where m1_0.ativo=1 and m1_0.especialidade=? and m1_0.id not in(select c1_0.medico_id from consultas c1_0 where c1_0.data=? and c1_0.motivo_cancelamento is null) order by rand() limit 1] org.springframework.dao.InvalidDataAccessResourceUsageException: JDBC exception executing SQL [select m1_0.id,m1_0.ativo,m1_0.crm,m1_0.email,m1_0.bairro,m1_0.cep,m1_0.cidade,m1_0.complemento,m1_0.logradouro,m1_0.numero,m1_0.uf,m1_0.especialidade,m1_0.nome,m1_0.telefone from medicos m1_0 where m1_0.ativo=1 and m1_0.especialidade=? and m1_0.id not in(select c1_0.medico_id from consultas c1_0 where c1_0.data=? and c1_0.motivo_cancelamento is null) order by rand() limit 1]; SQL [n/a]
jakarta.persistence.PersistenceException: Converting org.hibernate.exception.SQLGrammarException
to JPA PersistenceException
: could not execute statement
Caused by: java.sql.SQLSyntaxErrorException: Table 'vollmed_api.consultas' doesn't exist
Agora o problema é porque as suas migrations V7 e V8 não foram executadas, por conta do nome dos arquivos não estarem nos padrões do Flyway.
Essas suas duas migrastions estão com o nome V7_ e V8_ (apenas com um underline, ao invés de 2 underlines)
Professor continua apresentando os mesmos erros, fiz a alteração sem rodar o projeto, não dando certo parei ele fiz a exclusão salvei uma a uma e não rodou
Outra coisa que verifiquei nessas suas duas migrations é que os arquivos estão sem a extensão .sql.
Renomeie os dois arquivos para terminar com a extensão .sql
Além disso, tem um erro na sua migration V7, nessa linha:
constraint fk_consultas_medico_id foreing key(medico_id) references medicos(id),
A palavra foreing está escrita errada. Altere para:
constraint fk_consultas_medico_id foreign key(medico_id) references medicos(id),
Professor corrigido, porém apresenta os erros abaixos java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@fd413fb testClass = med.voll.api.domain.medico.MedicoRepositoryTest, locations = [], classes = [med.voll.api.ApiApplication], contextInitializerClasses = [], activeProfiles = ["test"], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTestContextBootstrapper=true"], contextCustomizers = [[ImportsContextCustomizer@1e1232cf key = [org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration, org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration, org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration, org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration, org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration, org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManagerAutoConfiguration]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@353352b6, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@402c4085, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.OverrideAutoConfigurationContextCustomizerFactory$DisableAutoConfigurationContextCustomizer@24569dba, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@9da1, org.springframework.boot.test.autoconfigure.filter.TypeExcludeFiltersContextCustomizer@351584c0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@58f7ebbb, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@3de8f619, org.springframework.boot.test.context.SpringBootTestAnnotation@a8b2f313], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Validate failed: Migrations have failed validation Detected failed migration to version 7 (create-table-consultas). Please remove any half-completed changes then run repair to fix the schema history.
Professor lhe peço desculpas por tantos erros, acredito que não tenha prestado tanto atenção nas aulas, pois muitas vezes estudei com sono antes do trabalho.
Tranquilo. Estamos aqui para te auxiliar ;)
Agora o problema é que o Flyway tentou executar alguma migration e ela falhou. Com isso, no banco de dados fica registrado que uma migration falhou, sendo necessario ajustar manualmente.
Acesse o MySQL e rode o seguinte comando para apagar as migrations que falharam na execução:
delete from flyway_schema_history WHERE success=0;
Professor fiz acessei o banco de dados, use vollmed_api resultado Query OK, 1 row affected (0.03 sec)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityFilter': Unsatisfied dependency expressed through field 'repository': Error creating bean with name 'usuarioRepository' defined in med.voll.api.domain.usuario.UsuarioRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager' Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'usuarioRepository' defined in med.voll.api.domain.usuario.UsuarioRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager' Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaSharedEM_entityManagerFactory': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument
Caused by: org.springframework.beans.factory.BeanCreationException:** Error creating bean with name 'flywayInitializer' defined in class p**ath resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Validate failed: Migrations have failed validation Detected failed migration to version 7 (create-table-consultas).
Detected failed migration to version 7 (create-table-consultas). Please remove any half-completed changes then run repair to fix the schema history.
A migration não foi apagada da tabela. Tem um jeito mais fácil que é apagar e criar novamente o banco de dados:
drop database vollmed_api;
create database vollmed_api;
Assim, todas as migrations serão executadas novamente.
Resolveu professor, obrigada