我正在运行一个集成测试,它在一个事务中执行一些Hibernate代码(由Spring管理)。重试密钥违规导致测试失败,我想在此之前点击断点并检查表格内容。我不能只是进入MySQL Workbench并运行SELECT
查询,因为它将在事务之外。还有另一种方式吗?
答案 0 :(得分:1)
在阅读您的评论后,我的印象主要是您对如何点击断点感兴趣,同时能够检查数据库内容。在正常情况下,我只会提供您记录SQL。记住断点我的建议是:
将隔离级别降低到READ_UNCOMMITED 以进行集成测试。
降低隔离级别将允许您在调试期间查看数据库中未提交的值。 只要您在集成测试中没有并行活动。应该没问题。
可以基于每个连接设置隔离级别。无需在服务器上执行任何操作。
一方注意。如果您正在使用Hibernate,那么当您减少ISOLATION LEVEL时,即使并行活动也可以正常工作,因为Hibernate的行为与REPEATABLE_READ一样,因为事务级别1缓存。 / p>
答案 1 :(得分:0)
以下内容可以从Eclipse的“显示”视图中运行:
java.util.Arrays.deepToString(
em.createNativeQuery("SELECT mystuff FROM mytable").getResultList().toArray())
.replace("], ", "]\n");
这显示所有数据,尽管不是以非常用户友好的方式 - 例如需要找出以逗号分隔的字段对应的列。