我试图通过使用compileEPL()方法编译它来修改epl,并添加更多内容,例如where子句,但是我很难让它工作。
让我们说这是我的个人资料:
select * from event where A = 1
我希望使用AND
添加另一个where条件我使用compileEPL()
编译eplmodel.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 :(得分:0)
where-clause以“A = 1”为根,以EQ为根。
Expression equalsExpr = model.getWhereClause();
因此构造一个包含旧EQ和新EQ的AND子句。
Expression and = Expressions.and().add(equalsExpr).add(Expressions.eq("B", ...));
最后将“and”设置为新的where子句:
model.setWhereClause(and);
总之,当修改表达式以添加“和”时:当旧表达式本身不是AND时,您应该构建AND节点并添加旧表达式和新表达式。