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做事务处理,谢谢了。

参考一篇文章了解
http://www.ibm.com/developerworks/cn/java/j-lo-spring25-test/

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

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


[/quote]

改为下边的:

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

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

[/code]