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.transaction.manager_lookup_class および hibernate.transaction.factory_class は、Hibernate 4 では不要になりました。

<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 に答える