我目前正在努力让一些 Esper EPL 查询正常工作。查询如下所示:
select a.center.distance(b.center) as delta
from pattern [
every-distinct(a.id, b.id) (
a=org.example.PositionEvent -> b=org.example.PositionEvent
)
]
当我尝试将其编译成EPLStatement
viaEPAdministrator.createEPL()
时,它会引发以下异常:
com.espertech.esper.client.EPStatementException:错误启动语句:无法按名称“a.center”加载类,请检查导入
如果我将事件类和查询修改为这样读取
select a.distance(b) as delta
from pattern [
every-distinct(a.id, b.id) (
a=org.example.PositionEvent -> b=org.example.PositionEvent
)
]
它编译得很好。Esper 似乎解释a.center.distance(...)
为一个类名后跟一个静态方法调用,而它解释a.distance(...)
为对 object 的方法调用a
。
如何让 Esper 按预期解释我的原始查询(即作为属性访问,然后是方法调用)?