zoukankan      html  css  js  c++  java
  • Calling method 'get' is not valid without an active transaction

    在进行使用注解来配置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" />

      

  • 相关阅读:
    MPI 学习
    关于谱聚类
    线程调度的学习例子
    [转] Linux的IO复用
    网络编程socket
    关于python机器学习常用算法的例子
    [转](阿里笔试)使用多线程和sleep函数生成字符串的伪随机排列
    Single Number II
    阿里面试题,N个士兵的通话问题
    凸优化算法之牛顿法
  • 原文地址:https://www.cnblogs.com/zjulanjian/p/10940905.html
Copyright © 2011-2022 走看看