首页 > 其他 > 详细

Calling method 'get' is not valid without an active transaction

时间:2019-05-28 23:25:01      阅读:159      评论:0      收藏:0      [点我收藏+]

在进行使用注解来配置Spring和Hibernate的整合的时候, 遇到了这个问题, 它的意思是说在调用‘get‘方法的时候,没有活动的事务.

原因分析: Hibernate强制要求在进行数据库操作的时候, 都必须包含在事务当中. 这个时候因为没有事务的管理, 因此报了这个错误. 

解决办法: 当然是为这个方法开启事务, 开始事务的方法有两种,

1. 使用Transaction transaction = session.beginTransaction(), 或者是

   /**
     * 查询用户
     * @param uid
     * @return
     */
    @Override
    public User get(Integer uid) {
        Transaction transaction = session.beginTransaction();
        User user = null;
        try {
            user = session.get(User.class,uid);
            transaction.commit();
        } catch(Exception e) {
            e.printStackTrace();
            transaction.rollback();
        }
         return user;
    }

 

2. 使用注解.

 但是目前注解加上去没有能够解决问题, 那么就推荐使用前面一种方法, 在调用get方法的前后加上代码

 配置事务有点复杂,暂时写到这里, 等待更新

<!-- 事务管理器配置, Hibernate单数据源事务 -->
    <bean id="defaultTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    
    <!-- 使用annotation定义事务 -->
    <tx:annotation-driven transaction-manager="defaultTransactionManager" proxy-target-class="true" />

 

  

Calling method 'get' is not valid without an active transaction

原文:https://www.cnblogs.com/zjulanjian/p/10940905.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!