我的xml中有类似下面的配置。我必须将两个参数传递给我的选择查询。
< int-jdbc:outbound-gateway data-source="datasource"
update="UPDATE DUMMY SET DUMMY_VALUE='test'"
request-channel="findPersonRequestChannel"
query="select * from Person where lower(name)=:payload[name] and id =:payload[id]"
reply-channel="findPersonReplyChannel"
row-mapper="personResultMapper"
max-rows-per-poll="100" >
< /int-jdbc:outbound-gateway >
通过上述方式获取例外情况: -
Caused by: org.springframework.integration.MessagingException: At most one parameter (or expression via method-level @Payload) may be mapped to the payload or Message. Found more than one on method [public abstract java.util.List org.springframework.integration.samples.jdbc.service.PersonService.findPersonByName(java.lang.String,java.lang.String)]
任何想法,如何解决此错误?
有一个参数,它的工作正常。
答案 0 :(得分:1)
您需要显示<gateway/>
配置和service-interface
。此问题是jdbc网关的上游。
看起来您正在尝试将两个值添加为有效负载(消息上只能有一个有效负载),而JDBC选择在单个有效负载上使用两个属性。
您的单个有效负载需要是JavaBean,或Map,数组等。
答案 1 :(得分:0)
<int-jdbc:outbound-gateway data-source="datasource"
request-channel="findPersonRequestChannel"
query="select * from Person where name=:name and id=:id"
reply-sql-parameter-source-factory="requestSource1"
reply-channel="findPersonReplyChannel"
row-mapper="personResultMapper"
max-rows-per-poll="100">
</int-jdbc:outbound-gateway>
<bean id="requestSource1" class="org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory">
<property name="parameterExpressions">
<map>
<entry key="name" value="payload.name"/>
<entry key="id" value="payload.personId"/>
</map>
</property>
</bean>
我有一个接受Person obj的服务接口。在调用搜索方法之前设置名称和ID。
告诉我,如果有人想了解更多信息。