2017-09-01 18 views
0

我有一個pojo,我想插入到數據庫(Sql Server)。當我運行我的代碼時,我得到了「從UNKNOWN到UNKNOWN的轉換不受支持」。我的問題是,如果我的pojo和我的數據庫的所有命名都一樣,我可以直接寫這個(或者是否有註釋讓我這麼做)?或者我在這裏總是需要一個bean來做映射嗎?我在想這個錯誤可能是因爲我在一個不屬於它的地方干擾了它。插入POJO到彈簧集成數據庫

在我的主類我有

@Inject 
TradePersistenceService dataService; 

Trade trade = new Trade(); 
trade.setSec_id(-1); 
trade.setSourceload_id(-1); 
trade.setCusip("123"); 

dataService.insertTradeMessage(trade); 

而在我的春天配置我有

<integration:channel id="InsertTradeMessageRequestChannel" /> 
<integration:channel id="InsertTradeMessageReplyChannel" /> 

<integration:gateway id="RTService" 
    service-interface="com.whatever.TradePersistenceService"> 
    <integration:method name="insertTradeMessage" 
     request-channel="InsertTradeMessageRequestChannel" reply-channel="InsertTradeMessageReplyChannel" /> 
</integration:gateway> 

<int-jdbc:outbound-gateway request-channel="InsertTradeMessageRequestChannel" 
    query="insert into MSRB_RTRS (Sec_ID, SourceLoad_ID, CUSIP) values (:Sec_ID, :SourceLoad_ID, :CUSIP" 
    data-source="rmsa"> 
</int-jdbc:outbound-gateway> 

在數據庫中,我有一個叫兩個數字列MSRB_RTRS表,一個varchar。

最後,我的POJO(與此處省略標準的getter和setter方法,以減少混亂)你有

public class Trade { 
int sec_id; 
int sourceload_id; 
String cusip; 
} 

回答

1

先用updatequery,爲INSERT。 其次,不清楚Sec_IDTrade類中的sec_id屬性的關係如何。

你應該考慮使用類似:

<beans:bean id="parameterSourceFactory" class="org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory"> 
    <beans:property name="parameterExpressions"> 
     <beans:map> 
      <beans:entry key="Sec_ID" value="payload.sec_id" /> 
      <beans:entry key="SourceLoad_ID" value="payload.sourceload_id" /> 
     </beans:map> 
    </beans:property> 
</beans:bean> 

您可以找到Reference Manual更多信息:

在上面的例子中,到達通道上的信息標註的輸入有一個有效載荷一個包含關鍵foo的地圖,因此[]運算符將從該地圖中提取該值。標題也作爲地圖訪問。

+0

好的,所以無論我傳入什麼,都會在xml中被稱爲「有效載荷」。這清除了一切,謝謝! – Steve

+0

Spring集成不支持Pojo上的任何類型的註釋(例如,如果您正在將pojo序列化爲xml)?我一直無法找到任何東西,但我想我會問。 – Steve

+1

那麼,沒有。 Spring Integration JDBC完全基於現有的Spring JDBC模塊。由於最新的一個不提供任何註釋映射,前者也是如此。如果您需要一些ORM,請查看Spring Integration JPA。 –