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();
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值