Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 由于非活动事务,Hibernate无法创建修订_Java_Spring_Hibernate_Hibernate Envers - Fatal编程技术网

Java 由于非活动事务,Hibernate无法创建修订

Java 由于非活动事务,Hibernate无法创建修订,java,spring,hibernate,hibernate-envers,Java,Spring,Hibernate,Hibernate Envers,当我试图使用hibernate和envers保存一个实体时,该实体仍存在于数据库中,但审核日志不存在,我得到以下异常: Caused by: org.hibernate.envers.exception.AuditException: Unable to create revision because of non-active transaction at org.hibernate.envers.event.spi.BaseEnversEventListener.checkIfTra

当我试图使用hibernate和envers保存一个实体时,该实体仍存在于数据库中,但审核日志不存在,我得到以下异常:

Caused by: org.hibernate.envers.exception.AuditException: Unable to create revision because of non-active transaction
    at org.hibernate.envers.event.spi.BaseEnversEventListener.checkIfTransactionInProgress(BaseEnversEventListener.java:132)
    at org.hibernate.envers.event.spi.EnversPostUpdateEventListenerImpl.onPostUpdate(EnversPostUpdateEventListenerImpl.java:34)
    at org.hibernate.action.internal.EntityUpdateAction.postUpdate(EntityUpdateAction.java:264)
    at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:211)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:582)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:456)
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1282)
    at org.springframework.orm.hibernate5.SessionFactoryUtils.flush(SessionFactoryUtils.java:144)
    ... 96 more

问题出在哪里?

Hibernate执行的每个操作都必须在事务内部。您是否在引发错误的操作之前启动事务。您必须显示一些代码。刚刚注意到您正在使用Spring。如果您只是在执行hibernate代码的方法上添加
@Transactional
,它可能会工作。请注意,
@Transactional
通常用于应用程序的服务/业务层。