hibernate - HQL включается во многие пункты - PullRequest
9 голосов
/ 14 июня 2011

Я читал документацию по Hibernate, но я не нашел ничего, что объясняло бы, как сделать следующее.

У меня есть следующий код SQL, который я пытаюсь преобразовать в 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";

Основной вопрос, который я имею, состоит в том, что я не могу иметь два предложения в левом внешнем соединении.HQL позволяет мне иметь ON cmd.message_key = msg.unique_key, но как мне добавить AND clause 2?

1 Ответ

20 голосов
/ 14 июня 2011

Вы можете добавить дополнительные условия соединения, используя ключевое слово with, что-то вроде этого (зависит от вашего отображения):

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

Смотри также:

...