Esper:EPL“选择”失败du验证错误
问题描述:
我试图用Esper运行一个简单的测试(第14章,http://dl.e-book-free.com/2013/07/activiti_in_action.pdf)。该代码非常简单:Esper:EPL“选择”失败du验证错误
public class EventLengthWindowTest {
public class LoanRequestEvent {
public int amount =2;
public LoanRequestEvent(int a){
amount += a;
}
}
private int sumAmount = 0;
@Test
public void testEventLengthWindow() {
Configuration configuration = new Configuration();
configuration.addEventType(LoanRequestEvent.class);
EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(configuration);
EPAdministrator admin = epService.getEPAdministrator();
EPStatement epStatement = admin.createEPL("select sum(amount) as sumAmount from LoanRequestEvent.win:length(2)");
...
}
我得到关于EPL部分的错误消息:
"select sum(amount) as sumAmount from LoanRequestEvent.win:length(2)"
它说:
com.espertech.esper.client.EPStatementException: Error starting statement: Failed to validate select-clause expression 'sum(amount)': Property named 'amount' is not valid in any stream [select sum(amount) as sumAmount from LoanRequestEvent.win:length(2)]
任何想法,为什么出现这种情况?
答
如果您希望Esper读取和/或写入它们,您需要为事件类中的事件属性提供JavaBean getter和setter。对于你的例子工作,你需要添加一个像这样的吸气:
public class LoanRequestEvent {
public int amount =2;
public LoanRequestEvent(int a){
amount += a;
}
public int getAmount() {
return amount;
}
}
太好了,非常感谢! – KayJ 2014-10-17 07:40:05