javax.persistence.PersistenceException:org.hibernate.SessionException:会话已关闭

时间:2019-03-25 09:15:05

标签: java spring spring-data-jpa

我收到异常javax.persistence.PersistenceException:org.hibernate.SessionException:在return语句中关闭了会话,我正在使用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();

有人对这个问题有想法吗?

2 个答案:

答案 0 :(得分:0)

感谢您的回复。.我在服务类中添加了transactionTemplate的工作方式。以下是工作代码。

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

答案 1 :(得分:0)

调用代码的公共方法需要用@Transactional注释。

此外,@Transactional的处理需要激活。这可能已经激活,也可能尚未激活。可以使用@EnableTransactionManagement激活它。

注释为@Transactional的方法不得在同一类中调用。