2017-12-21 5 views
4

postgresql에서 데이터를 가져 오는 다음 경로가 있지만 날짜 개체가 null이됩니다. 다음과 같은 경우는 그 값을postgresql 타임 스탬프를 camel jdbc의 시간대와 매핑 할 수 없습니다.

내 경로를 매핑 할 수 없습니다입니다

<route id="instrumentqueryshortsell"> 
     <from uri="direct:restinstumentshortsell"/> 
     <bean ref="inConverter" method="convert"/> 
     <setBody> 
      <simple>select instrumentId as instrument_Id ,amount,easytoborrow as easy_To_Borrow,hardtoborrow as hard_To_Borrow ,datetime as date from instrument_short_sell where instrumentId in (${body}) </simple> 
     </setBody> 
     <log message="Running following query ${body} " loggingLevel="DEBUG"/> 
     <to uri="jdbc:dataSource?useHeadersAsParameters=true&amp;outputClass=<packagename?.InstrumentShortSell" /> 

    </route> 
SQL 스키마가

CREATE TABLE instrument_short_sell (
    instrumentId serial , 
    amount INTEGER, 
    easytoborrow boolean, 
    hardtoborrow boolean, 
    datetime timestamp with time zone 
) ; 
내가 jodadatetime를 매핑 할 수 없습니다입니다

이며

import java.time.LocalDateTime; 

import org.joda.time.DateTime; 


public class InstrumentShortSell { 

    private String instrumentId; 
    private long amount; 
    private boolean easyToBorrow; 
    private boolean hardToBorrow; 
    private DateTime date; 

    public DateTime getDate() { 
     return date; 
    } 
    public void setDate(DateTime date) { 
     this.date = date; 
    } 
    public String getInstrumentId() { 
     return instrumentId; 
    } 
    public void setInstrumentId(String instrumentId) { 
     this.instrumentId = instrumentId; 
    } 
    public long getAmount() { 
     return amount; 
    } 
    public void setAmount(long amount) { 
     this.amount = amount; 
    } 
    public boolean isEasyToBorrow() { 
     return easyToBorrow; 
    } 
    public void setEasyToBorrow(boolean easyToBorrow) { 
     this.easyToBorrow = easyToBorrow; 
    } 
    public boolean isHardToBorrow() { 
     return hardToBorrow; 
    } 
    public void setHardToBorrow(boolean hardToBorrow) { 
     this.hardToBorrow = hardToBorrow; 
    } 


} 

처럼

내 뽀조 클래스 보인다 때마다 null이오고있어. 제발 우리가 낙타 jdbc에서 이것을 어떻게 매핑 할 수 있을까요?

+0

** org.joda.time.DateTime ** 대신 ** java.lang.Date **를 사용하려고 했습니까? –

+0

java.lang.Date java.lang.Date 어쨌든 java.lang.Date 완벽하게 작동하지만 Joda datetime이 필요합니다 – user1047873

답변

2

org.joda.time.DateTime에 대한 유형 변환기를 추가해야 Camel이 행 값을 joda 시간의 인스턴스로 변환 할 수 있습니다. 낙타는이 변환기를 상자에서 꺼내지 않습니다.

대안은 POJO 클래스의 매개 변수 유형으로 java.lang.Object을 사용하고 setter에서 유형 변환을 수행하는 것입니다.

+0

어떻게 내가 형식 변환기를 추가 할 수있는 좀 더 자세한 정보를주고 당신이 어떤 gthub 코드 정말 도움이 될 것입니다. – user1047873

+0

http://camel.apache.org/type-converter.html - Camel in Action 2 판 (제 1 판에서도)의 3 장에서 다룹니다. –

+0

다음 유형을 추가했습니다. 컨버터지만 도움이 안되있어. 나는 스프링 기반의 낙타를 사용하고 이것을 위해 콩을 추가했다. import org.apache.camel.Exchange; import org.apache.camel.TypeConversionException; import org.apache.camel.support.TypeConverterSupport; import org.joda.time.DateTime; 공용 클래스 DateTimeTypeConverter는 TypeConverterSupport { \t @Override \t 공공 T를 ConvertTo (클래스 유형, 교환 교환, 개체 값) TypeConversionException을 던졌습니다 { \t \t 경우 확장 (타입 == DateTime.class && 값을! = null이) { \t \t \t \t \t } \t \t 창 (T) DateTime.now(); \t} } – user1047873