2011-02-08 5 views
1

현재 Esper EPL 쿼리가 작동하는 데 어려움을 겪고 있습니다. 쿼리는 다음과 같이 찾고 있습니다 :Esper : EPL 쿼리에서 속성 액세스 및 메서드 호출 연결

com.espertech.esper.client.EPStatementException : 오류 시작하는 문 제가 EPAdministrator.createEPL() 통해 EPLStatement이 점을 컴파일 할 때

select a.center.distance(b.center) as delta 
from pattern [ 
    every-distinct(a.id, b.id) (
     a=org.example.PositionEvent -> b=org.example.PositionEvent 
    ) 
] 

는 다음과 같은 예외가 발생합니다 :이

,369처럼 읽을 수있는 이벤트 클래스와 쿼리를 수정하는 경우 수입

을 확인하시기 바랍니다 이름 '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 메서드 호출로 a.distance(...)을 해석하는 동안 클래스 메서드 이름 뒤에 a.center.distance(...)을 정적 메서드 호출로 해석합니다.

원래 쿼리를 의도 한대로 해석하도록하려면 어떻게해야합니까? (즉, 속성 액세스와 메소드 호출이 이어짐)?

답변

0

솔루션은 실제로 간단하고 직관적입니다. (조금 추한 것) : 모호한 부분이있을 수있는 것처럼 다른 곳에서와 마찬가지로 괄호를 사용하십시오. 그래서 첫 번째 쿼리 작업을 만들기 위해,이처럼 쓰기 :

이 경우
select (a.center).distance(b.center) as delta 
from pattern [ 
    every-distinct(a.id, b.id) (
     a=org.example.PositionEvent -> b=org.example.PositionEvent 
    ) 
] 

, 그것은 실제로 추가 괄호 조금이라도 더 읽기 보인다.