2

jdbc インバウンド チャネル アダプターへの動的クエリを定義できますか?

<int-jdbc:inbound-channel-adapter max-rows-per-poll="1" 
    query ="#{'select * from work where status=0 and and test='' + test.testValue+ '' order by date_modified'}"     
    channel="test" data-source="testDS" update="update work set status=1 where id in (:id)"
   >       
    <int:poller fixed-rate="100">
        <int:transactional transaction-manager="testTM"/>           
    </int:poller>       
</int-jdbc:inbound-channel-adapter>

ここでは、テスト Bean が定義されており、メソッド getTestValue() があります。これは機能していません。助言がありますか?

4

1 に答える 1

4

int-jdbc:inbound-channel-adapter の select-sql-parameter-source 属性を使用してみてください

<int-jdbc:inbound-channel-adapter query="select * from user where lower(username)=:key"
channel="inputChannel" data-source="dataSource"
update="UPDATE DUMMY SET DUMMY_VALUE='test'" row-mapper="personResultMapper"
select-sql-parameter-source="parameterSource" />

<bean id="parameterSource" class="Class to extend AbstractSqlParameterSource" />

AbstractSqlParameterSource を拡張するクラスは、パラメーターの値を提供する責任があります。

詳細については、https ://gist.github.com/dsyer/472357 を参照してください。

于 2013-05-22T10:38:53.827 に答える