我有传入的消息有字符串有效负载,但数据库,(我不控制),将这些数据记录为BLOB。有没有办法让Spring Integration将一个字符串按到CLOB或BLOB中?有没有办法使用Spring Integration的jdbc编写BLOB:oubound-channel-adapter?
我有一个出站通道适配器做一个数据库插入,这(简体)看起来像:
<int-jdbc:outbound-channel-adapter channel="inboundTraffic"
datasource="localDataSource"
query="insert into MESSAGES (DATA, SAVE_DATE)
values (:payload, :saveDate)"
sql-parameter-source-factory="spelSource" />
<bean id="spelSource" class="o.s.i.j.ExpressionEvaluatingSqlParameterSourceFactory">
<property name="parameterExpressions">
<map>
<entry key="payload" value="payload" />
<entry key="saveDate" value="new java.util.Date()" />
</map>
</property>
</bean>
但我得到了有效载荷的SQLException:
ORA-01461可绑定LONG值仅用于插入到LONG列中。
Ch。 18篇文档中有一个blob示例,整个事件被重写为服务激活器,而不是oubound-channel-adapter,以及从文件中流式传输......这看起来像是过度杀毒,但是BLOB和CLOBS应该是这样的方式在框架中完成?
感谢您的帮助!
感谢您的回复!不幸的是,它似乎并没有工作 - 你会得到一个错误的IllegalArgumentException“SqlLobValue只支持SQL类型BLOB和CLOB”,它来源于SqlLobValue.setTypeValue(...)方法。 如果没有设置sqlType,即BLOB或CLOB,就会出现这种情况。向后追溯,我没有看到一种方法,如果没有准备好声明已将其注入到bean中... – Decker
好!在我的答案中查看** UPDATE **。 –
是的,修复它,谢谢阿尔乔姆,我欣赏它! – Decker