Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate HQL查询将表本身与左外部联接联接_Hibernate_Jpa_Hql - Fatal编程技术网

Hibernate HQL查询将表本身与左外部联接联接

Hibernate 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 =

我想将一个表与其自身左外部联接,以便获得更多列

我有一个表,收集序列号和操作作为日志。我想根据序列号连接两个动作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() + "' "
“选择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() + "' "