2016-09-19 14 views
0

私はcompileEPL()メソッドを使ってコンパイルしてeplを修正しようとしていますが、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); 

「と」最後に「と」新しいWHERE句として設定

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

ANDノードを作成し、古い式と新しい式を追加します。

+0

ありがとうございます!これはうまくいった。それは、選択したプロパティやプロパティのような他の節でも同じアプローチですか?私はその間にやってみよう。 – wandapong

+0

コンテキストについてはどうですか?それはさらに混乱しました。ドキュメントの内容は、EPStmtObjを使用して作成する方法を示しています。しかし、crontabを使用するコンテキストでは、文字列変数を使用して手動で作成するほうが簡単でしょうか?もう1つは – wandapong

+0

です。私がgetWhereClauseを文字列として出力しようとすると、値はclient.sodaパッケージの値だけで表示されます – wandapong

関連する問題