Flink运行时报错:Cannot reference field by position on PojoType

Exception in thread "main" org.apache.flink.api.common.typeutils.CompositeType$InvalidFieldReferenceException: Cannot reference field by position on PojoType<org.apache.flink.walkthrough.common.entity.Transaction, fields = [accountId: Long, amount: Double, timestamp: Long]>Referencing a field by position is supported on tuples, case classes, and arrays. Additionally, you can select the 0th field of a primitive/basic type (e.g. int).
	at org.apache.flink.streaming.util.typeutils.FieldAccessorFactory.getAccessor(FieldAccessorFactory.java:93)
	at org.apache.flink.streaming.api.functions.aggregation.ComparableAggregator.<init>(ComparableAggregator.java:68)
	at org.apache.flink.streaming.api.datastream.WindowedStream.minBy(WindowedStream.java:769)
	at org.apache.flink.streaming.api.datastream.WindowedStream.minBy(WindowedStream.java:737)
	at org.itzhimei.transform.Transform_7_Window.main(Transform_7_Window.java:23)

原因是Cannot reference field by position on PojoType,虽然编译器没有提示错误,但是运行时发现我们编写的代码报错,无法支持。
报错代码:

dataStream.keyBy(Transaction::getAccountId)
                .window(TumblingProcessingTimeWindows.of(Time.seconds(5)))
                .sum(2);

问题语法是sum(2),window方法不支持使用下标位置引用POJO中的属性,需要使用属性名称引用,以上代码修改后就OK了。
修正代码:

dataStream.keyBy(Transaction::getAccountId)
                .window(TumblingProcessingTimeWindows.of(Time.seconds(5)))
                .sum("amount");

重点是这里:sum(“amount”);