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