Транзакция не получает данные о времени - PullRequest
0 голосов
/ 25 июня 2018

У меня есть проект со многими услугами.Я использую чистый JPA с Джерси в моем проекте.

Я использую entityManager, entityTransaction и entityManagerFactory следующим образом: для каждого сервиса я получаю EntityManager из DBManager.getEntityManager () и получаю и entityTransaction из его entityManager

public class DBManager {
    public static EntityManager getEntityManager() {
        return Persistence.createEntityManagerFactory("projectDataSource").getEntityManager();
}

В каждом методе, которыйнужна транзакция, сначала я проверяю transaction != null и транзакция не активна

Затем я начинаю транзакцию.

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

Один из моих сервисов: @getUsersService

public class GetUsersServiceImpl {

private static EntityManager entiyManager = DBManager.getEntityManager();
private static EntityTransaction entityTransaction = entityManager.getTransaction();

public List<User> getUsers()
    if (transaction != null && !transaction.isActive())
        transaction.begin()

    entityManager.getEntityMangerFactory().getCache().evictAll();

    return entityManger.createQuery("SELECT u FROM USER u WHERE u.isActive = true").getResultList();
}

Этот код работает, но не всегда!

У меня есть другой сервис, который меняет пользователей;этот пользователь также работает и изменяет данные пользователя в базе данных, но после вызова службы изменений, когда я вызываю службу getUsers, он извлекает старые данные базы данных

Почему это происходит?

Правильно ли яиспользовать entityManager и entityTransaction ...

...