Подтвердить что ты не робот

Как мы можем получить работу JPA EntityManager Flush

Мой вопрос в том, почему флеш не работает:

public void ejbService(){
   Customer c = em.find(Customer.class,1);
   c.setName("newName");
   em.flush();
   //at this point when I query mysql table I can not see "newName"


   thread.sleep(10000);

   c.setName("anotherName");
}

После завершения метода я вижу "otherName" в db также я проверяю его с помощью em.find(Customer.class, 1, Lock.None); но все еще не работает

УВАЖЕНИЕ

4b9b3361

Ответ 1

Вы очищаетесь, но вы не совершаете - или иначе прекратите транзакцию/сеанс, который, скорее всего, настроен для автоматической фиксации.

Да, после вызова flush(), СУБД теперь узнает о ваших данных, но, следуя стандартам ACID, никакие другие сеансы базы данных не будут видеть эти данные до тех пор, пока СУБД не сообщит об этом.

Не зная дополнительной информации об архитектуре, лежащей в основе остальной части вашего приложения, и т.д., вы, вероятно, хотите сделать что-то вроде:

em.getTransaction().commit();