加入的HQL路径(加入同一个表时)

Gro*_*roo 3 c# sql nhibernate hql inner-join

我试图获得两个不同设备的测量对,加入相同的时间戳.在SQL中,这可以按预期工作:

select
  leftItem.Timestamp, leftItem.Value, rightItem.Value
from
  DataTable leftItem
  inner join DataTable rightItem
  on leftItem.Timestamp = rightItem.Timestamp
where
  leftItem.Device = 1 and rightItem.Device = 2
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将其转换为HQL:

select
  left, right 
from
  DataTable as left 
  inner join DataTable as right
  on left.Timestamp = right.Timestamp
where
  left.Device = 1 and right.Device = 2
Run Code Online (Sandbox Code Playgroud)

我得到了 NHibernate.Hql.Ast.ANTLR.SemanticException:

Path expected for join!

如何指定同一个表的"路径"?

JB *_*zet 6

在HQL中,只能在实体之间的关联上完成连接.如果你想要连接其他东西,唯一的可能是在where子句中进行连接:

select left, right 
from
  DataTable as left, DataTable as right
where
  left.Timestamp = right.Timestamp
  and left.Device = 1 
  and right.Device = 2
Run Code Online (Sandbox Code Playgroud)