В настоящее время я пытаюсь заставить работать некоторые запросы 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
через EPAdministrator.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(...)
интерпретирует как вызов метода для объекта a
.
Как я могу заставить Esper интерпретировать мой исходный запрос как задумано (то есть как доступ к свойству с последующим вызовом метода)?