2014-10-17 51 views
0

我想写JdbcPagingItemReader与像一个复杂的查询:JdbcPagingItemReader具有多个选择查询

从YYY选择XXX,​​其中a = b和c =(从(F)YYY其中A = B选择最大)

...带参数。

这里是我写我的查询:

<bean 
      class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean"> 
      <property name="dataSource" ref="dataSource" /> 
      <property name="selectClause" value="SELECT ohrefnum" /> 
      <property name="fromClause" value="FROM orderhdr_all" /> 
      <property name="whereClause" 
       value="WHERE customer_id =: CUSTOMER_ID AND ohentdate = (SELECT MAX (ohentdate) FROM orderhdr_all WHERE customer_id =: CUSTOMER_ID)" /> 
      <property name="sortKey" value="ohrefnum" /> 
     </bean> 

,但它引发以下错误:java.sql.SQLException: Missing IN or OUT parameter at index:: 2

回答

0

我发现这个问题的起源。它只是后面的空格字符 “=:”

应该

WHERE CUSTOMER_ID =:CUSTOMER_ID)

,而不是

WHERE CUSTOMER_ID =: CUSTOMER_ID)