не в состоянии утверждать обновленное значение в тестах весенней загрузки jpa - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь выполнить обновление с помощью NamedQuery, но обновленные значения не сохраняются в БД, хотя оператор обновления возвращает обновленное количество.Это происходит только в тестах, но в реальном потоке происходит обновление.

@Test
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_UNCOMMITTED)
public void test() throws Exception 
  messageHandler.process(message);
} catch (Exception e) {
  throw new Exception();
}
assertEquals(new Integer(5), ServiceImpl.findById(100L).get().getStatus());
}

Class MessageHandler{
   @Transactional
   public void process(String message){
       serviceImpl.update(5,100, some date, user);
   }
}

class ServiceImpl {
@PersistenceContext
EntityManager entityManager;
@Modifying(flushAutomatically = true, clearAutomatically = true)
public void updateOrderStatus(Integer newOrderStatus, Long OrderId, String updateTs,
  String updateUserId) {
Query query = entityManager.createNamedQuery(Order.UPDATE_ORDER_STATUS);
entityManager.flush();
query.setParameter(1, newOrderStatus);
query.setParameter(2, OrderId);
query.setParameter(3, updateTs);
query.setParameter(4, updateUserId);
int i = query.executeUpdate();
System.out.println("***************************************");
System.out.println(i);
}
}

Может кто-нибудь помочь мне, что я делаю не так в тестовых случаях?

Заранее спасибо !!!!!!

1 Ответ

0 голосов
/ 22 января 2019

По умолчанию тестовые транзакции откатываются.Вам нужно явно использовать @Commit, если вы хотите, чтобы ваши тесты фиксировали изменения.Если вы еще этого не сделали, взгляните на пружинные документы .

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