我在 Hibernate/Spring 应用程序中进行了一系列测试。昨天,我将它们从使用 Spring 提供的 JUnit 3.8 基础测试类转换为 JUnit 4.4。
一切都很好,因为现在,我的测试包含在事务中,创建/修改的数据会自动回滚(而不是我编写代码来删除新创建的实体)。
唯一的问题是我无法在测试执行期间窥视数据库。如果测试失败,我经常在接近尾声的地方添加断点并通过 SQL Yog 窥视 MySQL 数据库以查看发生了什么上。但是现在,我只看到空表。 (我的意思是在非常接近地模拟生产并实际接触数据库的集成测试中。)
我尝试将全局隔离级别设置为未提交读取,但这并没有改变我看不到数据的事实。如何配置 Spring/Hibernate 以允许我查看来自另一个进程的数据?
最佳答案
我遇到了同样的问题,发现在使用 YOG 时设置session 隔离级别有时会有所帮助。
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
这只揭示了另一个令人不安的问题 - 在运行测试时,Hibernate 实际上并没有运行某些操作,除非我在每次 Hibernate 操作后使用 HibernateTemplate.flush();
。
由于这非常烦人,我最终设置了 Hibernate,使其始终刷新 查询,如下所示:
HibernateTemplate hibernateTemplate;
...
hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_ALWAYS);
关于java - 从事务测试中查看数据 - Hibernate + Spring + MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5675928/