Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Error en mi query para consultar medicos con disponibilidad en cierta fecha por id

Hola, como están buenas noches, escribo en este momento para indicar un problema que no le he podido dar solución, el problema supuestamente radica en una tabla "medico", que no existe, y asi debe ser, ya que la tabla en la que debe hacerse el querie es en "medicos", no comprendo este error, sería de gran ayuda que puedan colaborarme, muchas gracias

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadIngrese aquí la descripción de esta imagen para ayudar con la accesibilidadIngrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

¡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