1

保存休眠域对象时出现以下错误。

org.springframework.orm.hibernate4.HibernateSystemException:由于非活动事务而无法创建修订;嵌套异常是 org.hibernate.envers.exception.AuditException:由于非活动事务而无法创建修订

如果我禁用 envers,一切正常,并且对象已成功保存。

<prop key="hibernate.listeners.envers.autoRegister">false</prop>

我的设置如下

我在我的sessionFactorybean中包含了以下内容

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" >
...
      <prop key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WeblogicTransactionManagerLookup</prop>
      <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>
...

我正在使用以下配置查找 weblogic 数据源

<jee:jndi-lookup id="dataSource" jndi-name="jdbc.myDsXA" /> 
<tx:jta-transaction-manager />

我究竟做错了什么?

4

5 回答 5

1

更换物业hibernate.transaction.factory_class

org.hibernate.transaction.JTATransactionFactory

org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory

为我解决了这个问题。

见这里: http: //koenserneels.blogspot.de/2012/05/migrating-from-hibernate-3-to-4-with.html

在这里:https ://jira.spring.io/browse/SPR-9480

于 2014-05-07T20:38:28.887 回答
1

我认为您应该将“jtaTransactionManager”属性设置为 LocalSessionFactoryBean。Hibernate 4 不再需要属性 hibernate.transaction.manager_lookup_class 和 hibernate.transaction.factory_class。

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" >
...
    <property name="jtaTransactionManager" ref="transactionManager" />
...
</bean>

<tx:jta-transaction-manager />
于 2013-09-24T20:01:26.657 回答
0

就我而言,改变了我获得会话的方式

@Transactional(readOnly = false)
public T save(T t) {
    Session session = sessionFactory.openSession();

@Transactional(readOnly = false)
public T save(T t) {
    Session session = sessionFactory.getCurrentSession();

解决了这个问题。

于 2015-02-08T23:26:29.947 回答
0

我为交易顾问设置了订单

http://mejagged.blogspot.com.br/2014/03/orghibernateenverseexceptionauditexcepti.html

于 2015-01-05T17:39:56.323 回答
0

看起来你本身并没有做错什么。我目前正在使用 Grails 遇到类似的问题,从我的搜索来看,它看起来像是 Hibernate ORM: HHH-8524的问题。链接中指定的解决方法是显式开始休眠事务。

于 2015-11-03T15:48:32.457 回答