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;
    }
}
Другие вопросы по тегам