Hibernate HQL查询将表本身与左外部联接联接
我想将一个表与其自身左外部联接,以便获得更多列 我有一个表,收集序列号和操作作为日志。我想根据序列号连接两个动作a1和a2。返回的结果应具有serialNumber、a1和a2。如果a2不存在,它将为空。当我使用where语句时,它将只返回同时包含a1和a2的serialNumberHibernate HQL查询将表本身与左外部联接联接,hibernate,jpa,hql,Hibernate,Jpa,Hql,我想将一个表与其自身左外部联接,以便获得更多列 我有一个表,收集序列号和操作作为日志。我想根据序列号连接两个动作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 =
"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() + "' "
“选择l.serialNumber、l.time、s.time”
+“从日志作为l左外部连接日志作为s”
+“在s.serialNumber=l.serialNumber上”
+“其中s.action='a2'和l.action='a1'”
+“和l.time>=”“+start.getTime()+””
+并且l.time您的HQL无效,您不需要(可以)指定联接列,这已经需要映射到您的实体中
尝试:
“选择l.serialNumber、l.time、s.time”
+“左连接l.serialNumber s”
+“其中s.action='a2'和l.action='a1'”
+“和l.time>=”“+start.getTime()+””
+“还有l.time
"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() + "' "