我一直在阅读Hibernate文档,但没有发现任何可以解释如何执行以下操作的内容。
我有以下尝试转换为HQL的SQL代码:
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";
我遇到的主要问题是我无法在LEFT OUTER JOIN上有两个子句。 HQL让我拥有
ON cmd.message_key = msg.unique_key
,但是我该如何添加AND clause 2?
最佳答案
您可以使用with
关键字添加额外的加入条件,如下所示(取决于您的映射):
SELECT m, c
FROM Message m LEFT JOIN m.commands c WITH (lower(c.status) = 'failed')
WHERE m.sequenceReceived < 10
另请参见:
关于sql - hibernate -HQL连接许多子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345052/