supongamos que tengo las siguientes 3 tablas:
ID de la instalación , nombre
Id. del procesador , id_instalación, habilitado
Id. de tarea , id_instalación, id_procesador, nombre
Tengo consultas que naturalmente unen la tabla de tareas con la tabla del procesador , pero es posible que algunas tareas no estén vinculadas a los procesadores (es decir, task.processor_id puede ser nulo). Quiero ejecutar una consulta que extraiga todas las tareas en las instalaciones que están vinculadas a un procesador habilitado.
En otras palabras, la consulta debería verse así:
seleccione tarea.nombre
de tarea, procesador
donde task.facility_id = procesador.facility_id y procesador.habilitado = 1
Uso las anotaciones @ManyToOne y @JoinColumn para vincular de forma natural la tarea con el procesador y la instalación . También hay @ManytoOne y @JoinColumn en el procesador a la instalación .
¿Cómo puedo hacerlo usando criterios de hibernación sin recurrir a SQL nativo?