Estou tentando criar uma query onde envolve uma tabela de quebra. Funciona assim, tenho um profissional onde informo os dias da semana que ele irá trabalhar. Então quero verificar se o dia informado pela pessoa que esta realizando o agendamento para ele, é um dia de trabalho do profissional.
Para isso eu fiz o meu rpository da seguinte forma:
@Query("""
Select d.dias_da_semana
from Profissional p, profissional_dias_da_semana d
where p.id = d.profissional_id
and d.profissional_id = :id
""")
List<Profissional> findByIdDiasSemana(Long id);
A tabela profissional_dias_da_semana é uma quebra onde pego os dias da semana por profissional
Na minha classe profissional esta da seguinte forma:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_pessoa")
private Pessoa id_pessoa;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_profissao")
private Profissao id_profissao;
@ElementCollection(targetClass = DiasDaSemana.class)
@Enumerated(EnumType.STRING)
private List<DiasDaSemana> dias_da_semana;
private String carteira_profissional;
private String observacao;
private Boolean status;
private LocalDateTime data_admissao;
private LocalDateTime data_desligamento;
Por fim o meu enum com os dias da semana:
public enum DiasDaSemana {
DOMINGO,
SEGUNDA,
TERÇA,
QUARTA,
QUINTA,
SEXTA,
SABADO
}
Ao iniciar o projeto estou recebendo esta exceção:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ValidadorDiaDaSemana': Unsatisfied dependency expressed through field 'profissionalRepository': Error creating bean with name 'profissionalRepository' defined in br.com.nsistemas.apiclinica.repository.ProfissionalRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.util.List br.com.nsistemas.apiclinica.repository.ProfissionalRepository.findByIdDiasSemana(java.lang.Long); Reason: Validation failed for query for method public abstract java.util.List br.com.nsistemas.apiclinica.repository.ProfissionalRepository.findByIdDiasSemana(java.lang.Long)
Existe uma forma mais simples para verificar se o dia esta disponível para o profissional?