【问题标题】:Transaction not getting committed事务未提交
【发布时间】:2021-01-24 06:04:03
【问题描述】:

从事 Spring 5 和 Hibernate 项目。使用 Spring 进行 bean 管理、事务和 MVC。尽管我可以在日志中看到插入语句,但这些更改并未提交到数据库。没有错误。选择语句没有问题。我可以登录到应用程序。以下是我的配置:

framework.xml:

    <context:component-scan base-package="com.test" > 
        <context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/> 
    </context:component-scan> 
    
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" 
          ref="dataSource"/>
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
        <property name="jtaTransactionManager" ref="transactionManager" />
        
    </bean>
    <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
        <property name="forceShutdown" value="false" />
    </bean>
 
    <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.J2eeUserTransaction">
        <property name="transactionTimeout" value="300" />
    </bean>
    
     <!--  
    <bean id="HibernateTransactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    -->
      
    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" >
    <property name="transactionManager"><ref bean="atomikosTransactionManager"  /></property>
    <property name="userTransaction"><ref bean="atomikosUserTransaction"  /></property>
    </bean>
     
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="false"/>
In the above configuration, i excluded the controllers as they are loaded using a different mvc related config files.

The service classes were annotated with @Transactional.

I tried without JTA with plain HibernateTransactionManager also. The transactions are not getting committed.
The below entry is also for hibernate to use JTA as transaction manager
hibernate.transaction.jta.platform to org.hibernate.engine.transaction.jta.
platform.internal.AtomikosJtaPlatform and  
   hibernate.transaction.coordinator_class to jta
I am using getCurrentSession for getting hibernate session.

I have to use Atomikos as JTA transaction manager as the development has to be happen in servlet container.

在此先感谢您提供任何帮助以查找配置中的差距或任何其他问题..

【问题讨论】:

  • 如果使用org.springframework.transaction.jta.JtaTransactionManager,数据源需要是XA还是事务管理器也可以在普通数据源中提交?因为在日志中,有“启动事务提交”条目,但在db中没有插入记录。

标签: spring hibernate transactions jta


【解决方案1】:

问题出在 maven Jetty 插件上,并且创建的 db 连接没有保留使用 hibernate 5 和 maven jetty 插件 9.4.35.v20201120 的更改,尽管它正在使用 hibernate 3 和 maven jetty 插件 7.0.1.v20091125 .当我在 tomcat 中使用预配置的数据源部署相同的 war 文件时,能够持久化更改。

【讨论】:

    猜你喜欢
    • 2011-04-30
    • 2016-02-12
    • 1970-01-01
    • 2011-03-13
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多