проблема с выходным адаптером входящего канала jpa - PullRequest
0 голосов
/ 03 апреля 2019
@Bean
public JpaPollingChannelAdapter reimStgResponseJpaInboundAdapter() {
    return Jpa
            .inboundAdapter(entityManager)
            .nativeQuery(responseQueryString)
            //.expectSingleResult(true)
            .get(); 
}

@Bean
public IntegrationFlow reimFeedbackHandle() {
    return IntegrationFlows
                    .from("reimFeedbackChannel")
                    .handle(msg -> {
                        try {
                            dctmHandler.handleReIMFeedback(msg);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }})
                    .get(); 
}

.expectSingleResult(true) возвращает исключение, что ожидался 1 результат.

Собственный запрос - String responseQueryString = "select * from RMS16DEV.TSC_IM_DOC_HEAD_TEMP where error_ind is not null";

Сообщение от входящего адаптера является списком массивов, и я не могу привести его к правильному объекту.Каков тип, который возвращается входящим адаптером jpa в канал?

public void handleReIMFeedback(Message<?> reimStgRowMsg) throws Exception {
    List<TSC_IM_DOC_HEAD_TEMP> list = (List<TSC_IM_DOC_HEAD_TEMP>) reimStgRowMsg.getPayload(); 
    System.out.println( (list.get(0)));
}

дает мне:

java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class java.util.List ([Ljava.lang.Object; and java.util.List are in module java.base of loader 'bootstrap')
at tesco.finance.gss.dctmreim.jpa.handlers.DctmHandlers.handleReIMFeedback(DctmHandlers.java:28)
`

1 Ответ

0 голосов
/ 03 апреля 2019

Ниже кода исправлена ​​проблема:

@Bean
public JpaPollingChannelAdapter reimStgResponseJpaInboundAdapter() {
    return Jpa
            .inboundAdapter(entityManager)
            .nativeQuery(responseQueryString)
            .expectSingleResult(true)
            .entityClass(TSC_IM_DOC_HEAD_TEMP.class)
            .get(); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...