Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Error creating bean with name 'consultaController'

Ola

estou com uma duvida

já verifiquei os espaços que tem na query e mesmo assim o erro persiste

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consultaController': Unsatisfied dependency expressed through field 'agenda': Error creating bean with name 'agendaDeConsultas': Unsatisfied dependency expressed through field 'consultaRepository': Error creating bean with name 'consultaRepository' defined in med.voll.api.domain.consulta.ConsultaRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.lang.Boolean med.voll.api.domain.consulta.ConsultaRepository.existPacienteIdAndDataBetWeen(java.lang.Long,java.time.LocalDateTime,java.time.LocalDateTime); Reason: Failed to create query for method public abstract java.lang.Boolean med.voll.api.domain.consulta.ConsultaRepository.existPacienteIdAndDataBetWeen(java.lang.Long,java.time.LocalDateTime,java.time.LocalDateTime); No property 'existPacienteId' found for type 'Consulta'

Segue a classe controller

package med.voll.api.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
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.validation.Valid;
import med.voll.api.domain.consulta.AgendaDeConsultas;
import med.voll.api.domain.consulta.DadosAgendamentoConsulta;

@RestController
@RequestMapping("consultas")
public class ConsultaController {
    
    
    @Autowired
    private AgendaDeConsultas agenda;

    @PostMapping
    @Transactional
    public ResponseEntity agendar(@RequestBody @Valid DadosAgendamentoConsulta dados) {

        var dto = agenda.agendar(dados);
        return ResponseEntity.ok(dto);
                

    }

}

agora a classe medicoRepository

package med.voll.api.domain.medico;

import java.time.LocalDateTime;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

public interface MedicoRepository extends JpaRepository<Medico, Long> {
    Page<Medico> findAllByAtivoTrue(Pageable paginacao);

    
    @Query("""
            select m from Medico m
            where
            m.ativo = 1
            and 
            m.especialidade = :especialidade
            and 
            m.id not in(
                select c.medico.id from Consulta c
                where 
                c.data = :data
            )
            
            order by rand()
            limit 1
            """)
    Medico escolherMedicoAleatorioLivreNaData(Especialidade especialidade, LocalDateTime data);




    @Query("""
            select m.ativo 
            from Medico m 
            where 
            m.id = :id 
            """)
            
    Boolean FindAtivoById(Long id);


    Boolean existsByMedicoIdAndData(Long idMedico,LocalDateTime data);


}

capaz do erro esta na minha cara e eu não esta vendo

1 resposta
solução!

Oi!

O erro na verdade está na interface ConsultaRepository, no médodo existPacienteIdAndDataBetWeen

O nome desse método deveria ser: existsByPacienteIdAndDataBetween