【问题标题】:The associated entity manager is closed! Hibernate envers关联实体管理器已关闭!休眠环境
【发布时间】:2026-01-21 07:10:01
【问题描述】:

我正在使用 Hibernate 环境尝试从审核表中检索审核记录,但看到异常 关联实体管理器已关闭!休眠环境。这是给出异常的代码。

public void returnUserAudit(){
        AuditReader auditReader = AuditReaderFactory.get(entityManager);
        return auditReader.createQuery().forRevisionsOfEntity(UserDetails.class, true, true)
                .add(AuditEntity.property("userDetails.userId").eq(appId)).
                add(AuditEntity.property("userDetails.email").eq(deplymntId)).
                add(AuditEntity.property("status").eq("Approved")).
                addOrder(AuditEntity.revisionNumber().desc()).
                setMaxResults(recordLimit).getResultList();
}

java.lang.IllegalStateException: The associated entity manager is closed!
at org.hibernate.envers.internal.reader.AuditReaderImpl.checkSession(AuditReaderImpl.java:65) ~[hibernate-envers-5.3.10.Final.jar!/:5.3.10.Final]
at org.hibernate.envers.internal.reader.AuditReaderImpl.isEntityNameAudited(AuditReaderImpl.java:306) ~[hibernate-envers-5.3.10.Final.jar!/:5.3.10.Final]
at org.hibernate.envers.query.AuditQueryCreator.checkEntityAudited(AuditQueryCreator.java:346) ~[hibernate-envers-5.3.10.Final.jar!/:5.3.10.Final]
at org.hibernate.envers.query.AuditQueryCreator.forRevisionsOfEntity(AuditQueryCreator.java:169) ~[hibernate-envers-5.3.10.Final.jar!/:5.3.10.Final]

【问题讨论】:

    标签: java hibernate hibernate-envers


    【解决方案1】:

    我会检查您对entityManager 的使用模式。您要么在某个时候缓存一个打开的 EM 的实例,并在它关闭后尝试重用它,要么该实例一开始就没有正确打开。无论哪种情况,这都表示用户错误,而不是 Envers 错误。

    【讨论】: