微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

事务未提交

如何解决事务未提交

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

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.

预先感谢您帮助查找配置中的差距或任何其他问题..

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。