2016-09-19 2 views
0

epl을 compileEPL() 메소드를 사용하여 컴파일하여 수정하고 where 절에 더 많이 추가하려고 시도했지만 문제가 발생하지 않았습니다.EPStatmentObject 모델이 작동하지 않습니까?

말할 수 있습니다이 내 EPL입니다 :

select * from event where A = 1 

와 나는 AND

를 사용하여 다른 곳 조건을 추가하고 싶은 나는 compileEPL를 사용하는 EPL()

model.getWhereClause().getChildren().add(Expressions.and() 
         .add(Expressions.eq("B",))); 

대신 컴파일 나에게주는 것 :

select * from event where A = 1 and B = 2 it just gives ..where A = 1 and not adding the new where clause. 

내가 잘못하고 있니? EPStatementObjectModel은 처음부터 개체 EPL을 작성하는 데는 잘 작동하지만 컴파일하거나 추가하거나 수정할 때 적합하지 않습니다.

아는 사람 있습니까? 감사.

답변

0

where 절은 "A = 1"부터 EQ에 루팅됩니다.

Expression equalsExpr = model.getWhereClause(); 

따라서 기존 EQ와 새 EQ를 보유하는 AND 절을 구성하십시오. 식을 수정할 때

요약
model.setWhereClause(and); 

추가하기 "와": 오래된 표현은하지 자체와 때 구축해야

Expression and = Expressions.and().add(equalsExpr).add(Expressions.eq("B", ...)); 

마지막으로 "와"새로운 곳에 절로 설정 AND 노드를 선택하고 이전 표현식과 새 표현식을 추가하십시오.

+0

감사합니다. 이것은 효과가 있었다. select 속성과 property와 같은 다른 절에 대해서도 같은 접근 방식이 적용됩니까? 나는 그동안 노력할 것입니다. – wandapong

+0

컨텍스트는 어떻습니까? 그것은 훨씬 더 혼란 스러웠습니다. 문서 내용은 EPStmtObj를 사용하여 작성하는 방법을 말합니다. 하지만 crontab을 사용하는 컨텍스트의 경우 단순히 문자열 변수를 사용하여 수동으로 생성하는 것이 더 쉽습니다. – wandapong

+0

한 가지 더. getWhereClause를 문자열로 출력하려고하면 값이 client.soda 패키지의 값으로 표시됩니다. – wandapong