【问题标题】:JdbcPollingChannelAdapter setUpdateSql - binding parameter wrapped with quotesJdbcPollingChannelAdapter setUpdateSql - 用引号包裹的绑定参数
【发布时间】:2021-12-20 17:13:51
【问题描述】:

我需要在查询中将参数用引号括起来。

=':param'

   JdbcPollingChannelAdapter adapter = new JdbcPollingChannelAdapter(...
   adapter.setUpdateSql("..COL =':param'");
   adapter.setUpdateSqlParameterSourceFactory(...)

如果我添加引号参数不被替换,如果我删除引号参数被替换 - 但我必须有引号。

有界字段的类型很长。

尝试了不同的包装。

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    如果必须带引号,则必须引用param 评估的结果。 或者看起来它必须评估为String,只要你提到。查询绑定不像您期望的那样工作。它确实必须是查询处理器的顶级指令,才能让它从模板中正确绑定值。

    看看ExpressionEvaluatingSqlParameterSourceFactory 是否可以帮助您将:param 的结果评估为预期的引用值:https://docs.spring.io/spring-integration/docs/current/reference/html/jdbc.html#jdbc

    【讨论】:

    • 肮脏的解决方法,如 sql 的特定方言:to_char(:param) 解决了它,但我不喜欢它
    • 我认为你把事情复杂化了。如果您不喜欢 to_char(),则似乎只需将代码中的 param 评估为 String 即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多