如何检查数据库事务中的数据?

时间:2016-07-21 15:34:16

标签: java mysql eclipse hibernate transactions

我正在运行一个集成测试,它在一个事务中执行一些Hibernate代码(由Spring管理)。重试密钥违规导致测试失败,我想在此之前点击断点并检查表格内容。我不能只是进入MySQL Workbench并运行SELECT查询,因为它将在事务之外。还有另一种方式吗?

2 个答案:

答案 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");

这显示所有数据,尽管不是以非常用户友好的方式 - 例如需要找出以逗号分隔的字段对应的列。