Esper: EPL "выбрать" не удалось из-за ошибки проверки
Я пытаюсь запустить простой тест с помощью Esper (глава 14, http://dl.e-book-free.com/2013/07/activiti_in_action.pdf). Код довольно прост:
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)]
Есть идеи, почему это происходит?
1 ответ
Решение
Вам нужно предоставить методы получения и установки JavaBean для свойств событий в ваших классах событий, если вы хотите, чтобы Esper читал и / или записывал в них. Чтобы ваш пример работал, вам нужно добавить геттер, например так:
public class LoanRequestEvent {
public int amount =2;
public LoanRequestEvent(int a){
amount += a;
}
public int getAmount() {
return amount;
}
}