¡Hola Cristian!
En este caso en alguna parte de tu código estas usando la tabla medico y no medicos, verifica tu clase modelo, si tu entidad es Medico debes adicionar la anotación @Table(name="medicos") para identificar que a nivel de base de datos se llamará medicos y la anotacion @Entity(name="Medico") para identificar que en tu código Java el nombre será Medico, ahora en tu consulta JPQL debes trabajar con la entidad Medico y el se encarga de hacer la traducción para la base de datos, si prefieres puedes anexar aqui tu consulta JPQL y tu entidad Medico para determinar que pueda estar faltando.
Para fines ilustrativos te anexo como seria la consulta JPQL para esa funcionalidad junto con las especificaciones más importantes de la clase Medico
MedicoRespository.java
@Query("""
select m from Medico m
where
m.activo = true
and
m.especialidad = :especialidad
and
m.id not in(
select c.medico.id from Consulta c
where
c.fecha = :fecha
)
order by rand()
limit 1
""")
Medico seleccionarMedicoConEspecialidadEnFecha(Especialidad especialidad, LocalDateTime fecha);
Medico.java
@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 nombre;
private String email;
private String telefono;
private String documento;
private Boolean activo;
@Enumerated(EnumType.STRING)
private Especialidad especialidad;
@Embedded
private Direccion direccion;
//Código omitido...
Espero que esto te ayude a solucionar el problema. ¡Buena suerte!
Espero haber ayudado y buenos estudios!
Si este post te ayudó, por favor,
marca como solucionado ✓. Continúa con tus estudios