Javax.persistence.PersistenceException: org.hibernate.SessionException: сеанс закрыт

я получаю исключение javax.persistence.PersistenceException: org.hibernate.SessionException: сеанс закрывается в операторе возврата, я использую Spring JPA.

 StringBuilder queryBuilder = new StringBuilder(querystat);
    System.out.println("startDate--->" + startDate);
    Query query = 
  getEntityManager().createQuery(queryBuilder.toString());
    System.out.println("query.list();--->"
            + query.getResultList().size());
 return query.getResultList();

у кого-нибудь есть идеи по этому вопросу?

Пожалуйста, поделитесь всем своим кодом.

akortex 25.03.2019 10:19

Вы пытались использовать query.getResultList() в переменной локального списка?

Pooja Aggarwal 25.03.2019 10:19

Вероятно, вам не хватает аннотации @Transactional/настройки транзакций.

Michal 25.03.2019 10:20

Прикрепите отладчик с beakpoint к исключению «javax.persistence.PersistenceException», а затем проверьте основную причину этого исключения.

Shailendra 25.03.2019 10:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
147
2

Ответы 2

Спасибо за ответы. Я добавил transactionTemplate в класс обслуживания, его работа. Ниже приведен рабочий код.

return transactionTemplate
    .execute(new TransactionCallback<List<?>>() {
        public List<?> doInTransaction(
                TransactionStatus status) {
            return dao.monthReportQuery(startDate, endDate);
        }
    });

Пожалуйста, взгляните на способ работы @Transactional. Это приводит к лучшему коду, чем использование TransactionalTemplate... Я бы не использовал шаблонный способ ведения дел (транзакции, но и другие), если иное невозможно.

Michal 25.03.2019 10:54

Публичный метод, вызывающий код, должен быть аннотирован с помощью @транзакционный.

Далее необходимо активировать обработку @Transactional. Это может быть или не быть уже активным. Его можно активировать с помощью @EnableTransactionManagement.

Метод, помеченный @Transactional, не должен вызываться из того же класса.

Другие вопросы по теме