`
Java_Fan
  • 浏览: 81775 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

spring管理hibernate事务报异常--Transaction not successfully started解决方法

 
阅读更多
通过spring管理配置了事务管理,但是在执行过程中还是出现了异常:
Transaction not successfully started

以下三段代码均报了该异常。

1.
public void updateProcInstObj(TaProcInst taProcInstObj_from2) throws Exception{
        String hql = "update TaProcInst set inststate=?,runtimes=?,completetime=? where procinstid=? ";
        this.getSession.createQuery(hql)
            .setString(0, taProcInstObj_from2.getInststate())
            .setInteger(1, taProcInstObj_from2.getRuntimes().intValue())
            .setString(2, taProcInstObj_from2.getCompletetime())
            .setString(3, taProcInstObj_from2.getProcinstid())
            .executeUpdate();
    }

2.
public void updateProcInstObj(TaProcInst taProcInstObj_from2) throws Exception{
	TransAction transAction = this.getSession().getTransAction();
	transAction.begin();
        String hql = "update TaProcInst set inststate=?,runtimes=?,completetime=? where procinstid=? ";
        this.getSession.createQuery(hql)
            .setString(0, taProcInstObj_from2.getInststate())
            .setInteger(1, taProcInstObj_from2.getRuntimes().intValue())
            .setString(2, taProcInstObj_from2.getCompletetime())
            .setString(3, taProcInstObj_from2.getProcinstid())
            .executeUpdate();
	transAction.commit();
    }

3.
public void updateProcInstObj(TaProcInst taProcInstObj_from2) throws Exception{
	TransAction transAction = this.getSession().beginTransAction();
        String hql = "update TaProcInst set inststate=?,runtimes=?,completetime=? where procinstid=? ";
        this.getSession.createQuery(hql)
            .setString(0, taProcInstObj_from2.getInststate())
            .setInteger(1, taProcInstObj_from2.getRuntimes().intValue())
            .setString(2, taProcInstObj_from2.getCompletetime())
            .setString(3, taProcInstObj_from2.getProcinstid())
            .executeUpdate();
	transAction.commit();
    }

修改为如下的方式则可以解决此问题:

public void updateProcInstObj(TaProcInst taProcInstObj_from2) throws Exception{
        Session session = this.getSession();
        String hql = "update TaProcInst set inststate=?,runtimes=?,completetime=? where procinstid=? ";
        session.createQuery(hql)
            .setString(0, taProcInstObj_from2.getInststate())
            .setInteger(1, taProcInstObj_from2.getRuntimes().intValue())
            .setString(2, taProcInstObj_from2.getCompletetime())
            .setString(3, taProcInstObj_from2.getProcinstid())
            .executeUpdate();
        session.flush();
        session.clear();
    }


分享到:
评论

相关推荐

    Spring与Hibernate集成---声明式事务

    接下来,为了启用声明式事务管理,我们通常会在Spring的配置文件中添加`<tx:annotation-driven>`元素,这样Spring会自动扫描带有特定事务注解(如@Transactional)的方法,并根据注解的属性来管理事务。 ```xml ...

    spring-hibernate-maven-transaction整合

    【Spring与Hibernate、Maven和Transaction的整合】 在现代Java Web开发中,Spring框架、Hibernate持久化工具和Maven构建工具是不可或缺的部分。Spring提供了强大的依赖注入和面向切面编程能力,Hibernate则简化了...

    spring整合hibernate实现事务处理

    该注解可以应用于Service层的方法,表示在执行该方法时开启一个事务,如果方法执行过程中出现异常,事务会被回滚,否则在方法结束时提交事务。例如: ```java @Service public class UserService { @Autowired ...

    Could not roll back Hibernate transaction.doc

    本文详细介绍了Hibernate事务回滚失败的问题原因和解决方法,并对Hibernate的事务管理机制和事务回滚机制进行了详细说明。开发人员在使用Hibernate时,应该遵循Hibernate提供的API和事务管理机制,以确保数据库的...

    Spring Hibernate 事务处理 详细说明

    - Transaction API:Hibernate的Transaction接口提供了更高级别的事务管理,可以用来控制事务的生命周期。 当Spring和Hibernate结合使用时,Spring负责事务的外部管理,而Hibernate则处理内部的数据库交互。Spring...

    基于Hyperf的TCC分布式事务-tcc-transaction.zip

    在"tcc-transaction-master"项目中,开发者可以学习如何在Hyperf框架内定义TCC服务,以及如何协调这些服务以确保事务的一致性。具体步骤可能包括: 1. 创建TCC服务:为每个业务操作定义Try、Confirm和Cancel方法,...

    Spring-Struts-IBatis-AOP-Transaction

    编程式事务管理需要开发者手动调用 begin/commit/rollback 方法,而声明式事务管理则更简洁,只需在方法上添加 @Transactional 注解,Spring 就会自动处理事务的开始、提交和回滚。 **SSI 集成** 在 "17-Prj-...

    使用Spring的声明式事务----AOP方式

    在Spring框架中,声明式事务管理是通过AOP(面向切面编程)实现的,它为开发者提供了方便、高效且灵活的事务管理机制。本文将深入探讨如何利用Spring的声明式事务来处理业务操作中的数据一致性问题,以及相关源码...

    spring-context-3.2.0 spring-core-3.2.0 等齐全的Spring jar包

    10. **spring-tx-3.2.0.RELEASE.jar**:事务管理模块提供了编程和声明式的事务管理,支持JTA(Java Transaction API)和本地事务。这使得在Spring应用中管理事务变得容易。 这组Spring 3.2.0库的完整集合,为开发者...

    使用Spring的声明式事务----Annotation注解方式

    在Spring框架中,声明式事务管理是其核心特性之一,它允许开发者无需手动处理事务的开始、提交、回滚等操作,而是通过配置或者注解的方式进行声明,从而简化了事务管理的复杂性。本篇文章将深入探讨如何使用Spring的...

    spring五种事务配置demo

    本例所有的事务放在service层进行管理,方法中间抛出运行时异常以测试是否回滚 Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,...

    hibernate many-to-many级联保存,级联更新,级联删除

    在Java的持久化框架Hibernate中,Many-to-Many关系是一种常见的数据库表之间的关联方式,它表示一个实体可以与多个其他实体进行关联,反之亦然。本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、...

    在Spring中配置Hibernate事务

    在Spring框架中集成和配置Hibernate事务管理是企业级Java应用中的常见实践,它能提供高效且灵活的事务处理策略。Spring作为一款强大的依赖注入(DI)和面向切面编程(AOP)容器,能够轻松地管理和协调不同数据访问...

    spring mvc+hibernate实现事务管理(配置文件版)

    在整合Spring时,我们可以利用Spring的Transaction Management来控制Hibernate的事务。 在本项目中,我们需要配置Spring的事务管理器,一般有两种方式:编程式事务管理和声明式事务管理。声明式事务管理更为常见,...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    3. **事务管理**: 使用Spring的`HibernateTransactionManager`作为事务管理器,它可以理解Hibernate的Session和Transaction。 4. **事务传播行为**: 在多层服务调用中,可以通过设置`@Transactional`的propagation...

    第二部分spring+hibernate+jta 分布式事务Demo

    Spring、Hibernate和JTA(Java Transaction API)是Java开发者在构建分布式事务解决方案时常用的三大技术。本示例“第二部分spring+hibernate+jta 分布式事务Demo”将帮助我们理解如何在这三个框架之间协同工作,...

    spring hibernate mysql 事务实例

    Hibernate作为持久层框架,它自身也提供了事务管理,但通常在Spring环境下,我们会让Spring接管事务,以便在整个应用中保持一致的事务策略。Spring通过JDBC的DataSourceTransactionManager或Hibernate的...

    spring3、 hibernate4 配置声明式事务管理(annotation方式)

    本篇将详细介绍如何在Spring 3和Hibernate 4中配置声明式事务管理,采用注解方式。 一、Spring的事务管理 Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中显式地调用...

    Spring AOP管理Hibernate事务(TransactionInSpringAOP)

    通过阅读博文"TransactionInSpringAOP",开发者可以获得关于如何配置Spring AOP以管理Hibernate事务的具体步骤,以及可能遇到的问题和解决方案。这包括但不限于XML配置、Java配置、注解配置等不同方式,并且可能涵盖...

Global site tag (gtag.js) - Google Analytics