Spring integration Spring集成:如何将阵列作为单个有效负载发送到jdbc:出站网关

Spring integration Spring集成:如何将阵列作为单个有效负载发送到jdbc:出站网关,spring-integration,Spring Integration,如何将阵列作为单个有效负载发送到jdbc:Spring集成的出站网关? 我正在构造一个字符串数组并将其发送到接口方法。但是,SQL接受一个参数“:payload”,并以UncategorizedSQLException失败 出站网关的Sql查询如下: <int-jdbc:outbound-gateway data-source="dataSource" request-channel="requestChannel" query=

如何将阵列作为单个有效负载发送到jdbc:Spring集成的出站网关? 我正在构造一个字符串数组并将其发送到接口方法。但是,SQL接受一个参数“:payload”,并以UncategorizedSQLException失败

出站网关的Sql查询如下:

<int-jdbc:outbound-gateway data-source="dataSource"   request-channel="requestChannel" 
                           query="select XMLMSG from Table where SEQ_ID in (:payload)"                                
                           reply-channel="replyChannel" > 

</int-jdbc:outbound-gateway>

serviceinterface.findBySequenceIds(sequenceIdStringArray);

serviceinterface.findBySequenceIds(SequenceIDStringaray);

实际上,对于子句中的
,参数必须是
集合
而不是
数组
NamedParameterJdbcTemplate.substituteNamedParameters
的源代码:

if (value instanceof Collection) {
    Iterator<?> entryIter = ((Collection<?>) value).iterator();
    int k = 0;
        while (entryIter.hasNext()) {
    if (k > 0) {
        actualSql.append(", ");
        }

......
      actualSql.append("?");
你真正的疑问是:

select XMLMSG from Table where SEQ_ID in (?, ?, ?)
jdbc模板
将为您完成的其他工作

更新


注意,默认情况下,
只选择一条记录。要消除此限制,请指定
max rows per poll=“0”

如果无法为命名参数的计数动态构造SQL查询,Spring Integration将使用配置文件。不,您的配置是正常的。您的问题围绕一种
有效负载
。我说的是
real
query,意思是它将被发送到数据库。我知道怎么做。您只需将数组
有效负载
更改为
列表
谢谢,让我试试这种方法。我会随时通知您。我尝试了这种方法,但是replychannel/rowmapper只拾取了一条记录(xml有效负载)。请告知。1。您的
选择是否确实返回了多条记录?2.如何为查询参数构建
列表
有效负载?3.你没有试过调试,至少你的代码?
select XMLMSG from Table where SEQ_ID in (?, ?, ?)