Spring integration ReplyRequiredException尝试从<;获取数据;int jdbc:出站网关>;?
我想定义一个Spring integration ReplyRequiredException尝试从<;获取数据;int jdbc:出站网关>;?,spring-integration,Spring Integration,我想定义一个 使用查询和不使用更新从数据库检索数据。然后我想使用intjdbc:outboundgateway作为Service.findSomeData()接口方法的实现。从接口实现检索到的数据用于我的自定义transformer的CheckService类。请参阅下面的配置: <int:service-activator method=“performCheck”> <bean class=“com.example.service.CheckService”
使用查询
和不使用更新
从数据库检索数据。然后我想使用intjdbc:outboundgateway
作为Service.findSomeData()
接口方法的实现。从接口实现检索到的数据用于我的自定义transformer的CheckService
类。请参阅下面的配置:
<int:service-activator method=“performCheck”>
<bean class=“com.example.service.CheckService”
c:service-ref=“service”
</int:service-activator>
<int:gateway id=“service” service-interface=“com.example.service.Service”>
<int:method name=“findSomeData” request-channel=“jdbcChan” reply-channel=“jdbcChanReply”/>
</int:gateway>
<int-jdbc:outbound-gateway request-channel=“jdbcChan”
data-source=“pooledDs” row-mapper=“dataRowMapper” reply-channel=“jdbcChanReply”>
<int-jdbc:query>
select some, data from some_table
</int-jdbc:query>
我是做错了还是在最新的Spring集成JDBC中有一个bug?(对我来说,似乎连例子都没有了)I
很久以前,我们将requires reply
的默认值更改为true
,但示例从未更新
assertThat(foo,is(not(empty()))代码>
但是,当未收到任何结果时,列表
为null
编辑
但如果ResultSet为空,我希望列表为空而不是null
这不是它的工作原理
如果结果集为空,则返回null
(因此是您看到的原始错误)
如果结果集有1个条目,则只返回该条目
Object payload = list;
if (list.isEmpty()) {
return null;
}
if (list.size() == 1) {
payload = list.get(0);
}
return payload;
否则将返回实体列表
Object payload = list;
if (list.isEmpty()) {
return null;
}
if (list.size() == 1) {
payload = list.get(0);
}
return payload;
永远都是这样,但我相信单对象与列表是错误的(如果maxRows>1
)
默认情况下,maxRows
为1,因此它在当时是有意义的;但是,如果maxRows
为>1并且只返回1行,我认为它仍然应该是1的列表。应用程序不必检查结果的类型。它需要一个列表或单个对象(或null) 谢谢。我检查过了,如果你在数据库中添加一个人,它现在就可以工作了。但如果ResultSet为空,我希望列表为空,而不是null
。