Тестирование вставок через транспорт Mule JDBC во встроенный HSQLDB, последующий запрос не возвращает результатов - PullRequest
0 голосов
/ 10 августа 2011

Мой тест пытается показать, что оператор SQL, отправленный через исходящую конечную точку Mule JDBC, выполняется успешно.Проблема: после вставки через Mule, запрос к той же таблице не возвращает результатов.

Я использую Spring JDBC для проверки результатов этого оператора.

В моем методе настройки я создаю схемус помощью инструкции DDL, отправленной через Spring JDBC:

final JdbcTemplate _jdbcTemplate = new JdbcTemplate(new
SimpleDriverDataSource(new JDBCDriver(), "jdbc:hsqldb:mem:mydb"));

Выходной соединитель Mule JDBC также настроен для указания на jdbc: hsqldb: mem: mydb

<spring:bean id="myDataSource" class="org.enhydra.jdbc.standard.StandardDataSource" destroy-method="shutdown">
    <spring:property name="driverName" value="org.hsqldb.jdbc.JDBCDriver"/>
    <spring:property name="url" value="jdbc:hsqldb:mem:mydb"/>
</spring:bean>

<jdbc:connector name="insertionConnector" dataSource-ref="myDataSource">
    <jdbc:query key="insertion"
                value="INSERT INTO mytable (TEST_KEY) VALUES (#[map-payload:_testkey])"/>
</jdbc:connector>

<custom-transformer name="objectFieldsToMap" class="com.mydomain.ObjectFieldsToMap"/>

<flow name="sendInsertion">
    <vm:inbound-endpoint address="vm://insert"/>
    <jdbc:outbound-endpoint queryKey="insertion" transformer-refs="objectFieldsToMap" connector-ref="insertionConnector"/>
</flow>

Я подтвердил, что при вставке тестастроки и запросы для него с помощью Spring JDBC работают в обоих направлениях.

Я проверил, что отправка одного и того же оператора вставки через исходящую конечную точку возвращает 1 обновленную строку.

 final MuleClient muleClient = MyFactory.muleClient();
 final Date date = new Date();
 final MyObject myObject = new MyObject.Builder().setTestKey("test").build();

 muleClient.dispatch("vm://insert", myObject, null);

Однако, когда я запрашиваюВ той же таблице, использующей Spring JDBC, я получаю пустой набор результатов.

(String) _jdbcTemplate.queryForObject("SELECT TEST_KEY FROM MYDB.mytable", Class.forName("java.lang.String"));

Внутренне Mule (используя Apache DbUtils) фиксируется после выполнения оператора, поэтому вставка должна быть видимой для последующих запросов.Я использую тот же объект JdbcTemplate, который использовался для создания схемы и последующего запроса результатов.

Помощь приветствуется.Спасибо.

1 Ответ

0 голосов
/ 16 февраля 2012

Просто чтобы подтвердить, вы запускаете Mule и ваш весенний боб, запрашивая таблицу в той же JVM?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...