Cherbim01
2009-08-25 17:16
浏览 213
已采纳

Spring + Hibernate 使用@Transactional结合AspectJ的事务处理问题,请高手予以解答

最近在项目中用到Spring 2.5 + Hibernate 3.2,在做事务处理的过程中用到了自身嵌套的事务的问题,使用声明式的事务处理无法解决该问题,查看Spring 2.5的文档《9.5.6. 使用 @Transactional》一节中看到:

于是使用@Transactional来做,在Spring 配置xml文件里使用以下配置




但是用测试用例测试时会抛出如下异常:
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

测试用例如下:
public class ManagerTest extends
AbstractDependencyInjectionSpringContextTests {

private Manager manager;

public void setCategoryManager(Manager manager) {
    this.manager= manager;
}

@Override
protected String[] getConfigLocations() {
    return new String[] { "classpath:applicationContext.xml" };
}

       public void testAdd() {
    Entity entity = new Entity();
    entity.setId("1314");
    entity.setName("测试异常事务");
    try {
        manager.addOrUpdate(Entity);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

重写测试用例如下:
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class CateManagerTest extends
AbstractTransactionalJUnit4SpringContextTests {

@Autowired
private Manager manager;

@Test
public void testAdd() {
    Entity entity = new Entity();
    entity.setId("1314");
    entity.setName("测试异常事务");
    try {
        manager.addOrUpdate(Entity);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}
运行不再抛出异常,但是hibernate在控制台只提交查询的select语句,却不做插入数据库的操作

有哪位大侠高手用过@Transactional + AspectJ 形式的事务处理请告诉我该如何使用AspectJ做事务处理,谢谢了。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • wanghaolovezlq 2009-08-25 17:22
    已采纳
    点赞 打赏 评论
  • wanghaolovezlq 2009-08-25 17:21

    这是因为 Spring 的在测试方法返回前进行了事务回滚操作。

    点赞 打赏 评论
  • walsh_bupt 2009-08-25 17:24

    楼主你的Spring配置好像就有问题:
    [quote]


    [/quote]

    改为下边的:

    [code="xml"]<!-- 配置事务管理器(针对hibernate的事务管理器) -->

    <!-- 配置HibernateTransactionManager时需要依注入SessionFactory的引用 -->

    [/code]

    点赞 打赏 评论

相关推荐 更多相似问题