У меня возникла проблема с синхронизацией поля базы данных.Java Hibernate EntityManager sync
У меня есть класс Singleton, например EntityManager, я использую такой код:
Persistence.createEntityManagerFactory("Myproject_EJB")
Я создаю EntityManager, используя этот синглтон как с WebApplication и от WebService слоя и использовать его для доступа к персистенции.
Пользователь может изменить это поле базы данных с помощью WebApplication, но данные хранятся в базе данных только после завершения запроса (запрос может занять несколько секунд). Между тем, если кто-то звонит в WebService и запрашивает одно и то же поле, у меня есть несогласованное состояние.
В persistence.xml У меня есть use_second_level_cache и use_query_cache set true, а transaction-type = "JTA".
В WebAPP Я использую подобный код для данных обновления:
EntityManager em = EntityMan.getEMF().createEntityManager();
try {
em.find(Tel.class, tel.getTelId());
em.merge(tel);
em.flush();
} catch (Exception e) {
logger.debug(e.getMessage());
e.printStackTrace();
}
Как я могу решить, пожалуйста ??
Я не думаю, что проблема с кешем, я вижу, что данные в базу данных обновляются только после завершения запроса. Я знаю, что спящий режим использует сеанс-за-запрос, возможно, это мое условие, но как я могу изменить это поведение? И как я могу изменить только эту функцию, а не для всех приложений? – tulkas85