2011-06-14 23 views
8

He estado leyendo la documentación de Hibernate, pero no he encontrado nada que explique cómo hacer lo siguiente.hibernate - HQL se une a muchas cláusulas

Tengo el siguiente código SQL que estoy tratando de convertir a HQL:

SELECT {msg.*}, {cmd.*} 
FROM Schema.Messages AS msg 
    LEFT OUTER JOIN schema.send_commands AS cmd 
    ON cmd.message_key = msg.unique_key 
    AND (lower(cmd.status) IN (lower('failed'))) 
WHERE msg.sequence_received < 10"; 

El mainissue que estoy teniendo es que soy incapaz de tener dos cláusulas en una combinación externa izquierda. HQL me permite tener ON cmd.message_key = msg.unique_key , pero ¿cómo puedo añadir el AND clause 2?

Respuesta

15

Usted puede añadir el suplemento condiciones de combinación utilizando with palabra clave, algo como esto (depende de su asignación):

SELECT m, c 
FROM Message m LEFT JOIN m.commands c WITH (lower(c.status) = 'failed') 
WHERE m.sequenceReceived < 10 

Ver también:

+0

gracias. esto funcionó. ¿funcionará también como con dos argumentos como en: 'WITH (lower (c.status) = 'failed') AND (c.dateReceived iliaden

+0

@iliaden: Sí, debería funcionar. – axtavt

Cuestiones relacionadas