Невозможно сопоставить временную метку postgresql с часовым поясом в верблюде jdbc

У меня есть следующий маршрут, который получает данные из postgresql, но объект даты становится нулевым. он не может сопоставить это значение

Мой маршрут, если вы следуете

<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>

Мой класс Pojo выглядит так

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;
    }


}

Схема SQL

CREATE TABLE instrument_short_sell (
    instrumentId serial ,
    amount INTEGER,
    easytoborrow boolean,
    hardtoborrow boolean,
    datetime timestamp with time zone
) ;

Я не могу сопоставить jodadatetime и каждый раз, когда он становится нулевым. Пожалуйста, помогите мне, как мы можем отобразить это в верблюде jdbc


person user1047873    schedule 21.12.2017    source источник
comment
Вы пытались использовать java.lang.Date вместо org.joda.time.DateTime?   -  person Themis Pyrgiotis    schedule 21.12.2017
comment
java.lang.Date все равно не имеет часового пояса java.lang.Date работает отлично, но мне нужно это в Joda datetime   -  person user1047873    schedule 21.12.2017


Ответы (1)


Вам нужно добавить преобразователь типов для org.joda.time.DateTime, чтобы Camel мог преобразовать значение строки в экземпляр времени joda. Camel не поставляется с этими конвертерами из коробки.

Альтернативой является использование java.lang.Object в качестве типа параметра в вашем классе POJO и выполнение преобразования типа в установщике.

person Claus Ibsen    schedule 24.12.2017
comment
Как я могу добавить конвертер типов, не могли бы вы дать мне более подробную информацию об этом, и если у вас есть код gthub, который был бы действительно полезен - person user1047873; 26.12.2017
comment
См. camel.apache.org/type-converter.html — это также описано в главе 3 в книге Camel in Action 2-го издания (а также в 1-м издании) - person Claus Ibsen; 26.12.2017
comment
Я добавил следующий преобразователь типов, но это не помогло, так как он не подхватывается. Я использую верблюда на основе весны и добавил bean-компонент для этого импорта org.apache.camel.Exchange; импортировать org.apache.camel.TypeConversionException; импортировать org.apache.camel.support.TypeConverterSupport; импортировать org.joda.time.DateTime; открытый класс DateTimeTypeConverter extends TypeConverterSupport { @Override public ‹T› T convertTo(класс‹T› тип, Exchange exchange, значение объекта) throws TypeConversionException { if(type== DateTime.class && value != null){ } return (T) ДатаВремя.сейчас(); } } - person user1047873; 26.12.2017
comment
Я также использовал следующую ссылку github.com/jankronquist/AirportWeather, но не помогло. Я не уверен, работает ли конвертер типов, когда мы получаем данные из базы данных - person user1047873; 26.12.2017