sql - hibernate -HQL连接许多子句

标签 sql hibernate hql left-join

我一直在阅读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

另请参见:
  • 16.3. Associations and joins
  • 关于sql - hibernate -HQL连接许多子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345052/

    相关文章:

    sql - 通过加入 CTE 进行插入不会产生随机结果

    java - Hibernate 上与 @SecondaryTable 的多对一关系

    java - "Not supported for DML operations"使用简单的 UPDATE 查询

    java - 基于 Hibernate 注解的查询执行错误?

    java - 对象内的 EJB-QL 查询列表

    sql - 如何在SQL Server 2008中将数据转换为json格式?

    java - 如何在获取列名的查询中省略第一个结果?

    php - 如何在数据库中查询特定日期范围

    java - 如何避免 FROM 子句中的子查询将 SQL 查询转换为 Hibernate 查询?

    java - 如何保存表的顺序并防止并发问题