【问题标题】:HQL query to join table with itself with left outer join使用左外连接将表与自身连接的 HQL 查询
【发布时间】:2017-06-09 02:03:48
【问题描述】:

我想将一个表与自身进行左外连接,以便获得额外的列。

我有一个表格,将序列号和操作收集为日志。我想根据序列号加入两个动作 a1 和 a2。返回的结果应该有serialNumber、a1和a2。如果 a2 不存在,它将为空。当我使用 where 语句时,它只会返回同时具有 a1 和 a2 的 serialNumber。

"select l.serialNumber, l.time, s.time "
+ "from Log as l left outer join Log as s "
+ "ON s.serialNumber = l.serialNumber "
+ "where s.action = 'a2' AND l.action= 'a1' "
+ "AND l.time >= '" + start.getTime() + "' "
+ "AND l.time <= '" + end.getTime() + "' "

我在尝试运行上述查询时遇到异常:org.hibernate.TransactionException。

【问题讨论】:

    标签: hibernate jpa hql


    【解决方案1】:

    您的 HQL 无效,您不需要(可以)指定 JOIN 列,这已经需要映射到您的实体中。

    试试:

    "select l.serialNumber, l.time, s.time "
    + "left join l.serialNumber s "
    + "where s.action = 'a2' AND l.action= 'a1' "
    + "AND l.time >= '" + start.getTime() + "' "
    + "AND l.time <= '" + end.getTime() + "' "
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多