【发布时间】:2013-11-24 13:47:05
【问题描述】:
我有一个数据库表,我使用数据库适配器从这里提取我的有效负载是定义:
CREATE TABLE PriceTickets(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, PRICE INTEGER,DESTINATION VARCHAR(255))");
现在我在我的配置中启动我的数据库入站端点并尝试在有效负载上应用逻辑,如果价格值大于 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(
尝试了其他指定整数比较的组合,但没有奏效,任何建议都非常感谢。
【问题讨论】:
-
我猜这是因为当我从数据库中获取地图时,我没有使用#[map-payload:price]。有人可以确认吗?
-
您正在混合旧式表达式和 MEL:使用
#[message.payload]而不是#[message:payload]。