Java Spring@Transactional:已报告但未实际执行的回滚信息

Java Spring@Transactional:已报告但未实际执行的回滚信息,java,unit-testing,spring,testing,junit,Java,Unit Testing,Spring,Testing,Junit,我已将我的测试类注释如下: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"file:WebContent/WEB-INF/applicationContext.xml", "file:WebContent/WEB-INF/context-aspects.xml"}) @Transactional public class MyTest { } 但是,在执行测试时,测试数据库突然充满了值,尽管

我已将我的测试类注释如下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:WebContent/WEB-INF/applicationContext.xml", "file:WebContent/WEB-INF/context-aspects.xml"})
@Transactional
public class MyTest {

}
但是,在执行测试时,测试数据库突然充满了值,尽管启用了@Transactional,我可以在日志中读取以下内容:

INFO: Began transaction (4): transaction manager [org.springframework.orm.hibernate3.HibernateTransactionManager@669aa3f3]; rollback [true]
07.04.2011 23:57:33 org.springframework.test.context.transaction.TransactionalTestExecutionListener endTransaction
INFO: Rolled back transaction after test execution for test context ...
你知道为什么测试用例之后的实际回滚没有执行吗

更新:如果我使用的是HSQLDB,我没有这些问题——那么这是mysql的问题吗

更新:如果我使用的是HSQLDB,我没有这些问题——那么这是mysql的问题吗

是的,你是对的


检查您是否使用了正确的方言(当使用Hibernate:org.Hibernate.dialogue.mysql5innodbdialogue时),并且可能您应该监视发送到数据库的语句。

我最终可以解决这个问题。Hibernate正在生成显然不支持事务的MyISAM表。这是由于配置了错误的hibernate方言造成的。我曾经
org.hibernate.dialogue.mysql5dialogue,但org.hibernate.dialogue.mysql5innodbdialogue是必需的。

您使用的是什么数据库引擎?对于MySQL,您使用哪种类型:MyISAM或InnoDB?我使用的是MySQL InnoDB。在另一个项目中,它使用相同的数据库,但我无法找出配置中的差异。