我有一个数据库表,我使用数据库适配器从这里提取我的有效负载是定义:
CREATE TABLE PriceTickets(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, PRICE INTEGER,DESTINATION VARCHAR(255))");
现在,在我的配置中,我正在启动我的数据库入站端点&尝试在有效载荷上应用逻辑,如果Price值大于750,则转发到队列这里是逻辑:
<flow name="ExpreFlow2" doc:name="ExpreFlow2">
<jdbc-ee:inbound-endpoint queryTimeout="-1" doc:name="Database" connector-ref="jdbcConnector" queryKey="selectAll" pollingFrequency="10000">
<jdbc-ee:transaction action="NONE"/>
</jdbc-ee:inbound-endpoint>
doc:name="Expression"></expression-transformer>-->
<!-- <logger level="INFO" message="Payload is #[message:payload]" doc:name="Logger1"></logger> -->
<foreach doc:name="Foreach">
<choice doc:name="Choice">
<when expression="#[message.payload[0]['price'] > 750]" >
<processor-chain doc:name="Processor Chain">
<request-reply timeout="5000">
<jms:outbound-endpoint connector-ref="jmsConnector" queue="Queue1"></jms:outbound-endpoint>
<jms:inbound-endpoint connector-ref="jmsConnector" queue="Queue2"></jms:inbound-endpoint>
</request-reply>
</processor-chain>
</when>
但是我发现在尝试运行此流程时出现以下错误:
java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.Class
at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getCollectionPropertyAO(
尝试了指定整数比较的其他组合,没有工作,任何建议都非常受欢迎。
答案 0 :(得分:0)
您有foreach
来遍历行,因此表达式中的[0]
可能是多余的。
您应该可以直接使用以下命令获取列值:
#[message.payload.price > 750]