Изменения через обновление JDBC не отображаются в последовательном выборе JDBC - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть код с этой структурой (есть много классов, но схема такая:

void f() {
   MyObj o = db.getById(id);
   o.setField1(value);
   db.update(o);
   o = db.getById(id);
   assertEquals(value, o.getField());
}

методы update и get используют один и тот же источник данных, внедренный в Spring. получить работу через JdbcTemplate, а обновление просто берет соединение из источника данных и использует сырой JDBC. Обновление помечено аннотацией @Transactional. Вот определение Transacion Manager из конфигурации Spring:

<tx:annotation-driven transaction-manager="TransactionManager"/>

    <bean id="TransactionManager"
          class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

Проблема в том, что если я использую update и после него получаю разные вызовы методов веб-сервиса, которые используют их, например, результат верный, и я получаю обновленные значения. И если я вызываю их последовательно в одном методе модульного теста после обновления, я не вижу обновленного значения. Я не могу опубликовать весь код для чтения / записи здесь, потому что он большой и разбит на множество файлов, но, возможно, у вас есть идеи, как это исправить. Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

вы можете попробовать

entityManager.refresh(yourEntity);

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

0 голосов
/ 29 декабря 2011

Необходимо обновить обновление, чтобы увидеть его в списке выбора.

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