【问题标题】:How to delete rows from H2 table with commited changes after each Junit test如何在每次 Junit 测试后从 H2 表中删除已提交更改的行
【发布时间】:2016-04-14 03:36:57
【问题描述】:

我正在使用 H2 内存数据库进行单元测试与数据库的交互。

我需要清除 @After 中已提交的更改,以便表格保留但所有行都被擦除(因此我不能只删除表格)。我的数据库也有很多外键,这使得我必须按照一定的顺序一个一个地擦除对象。

有没有什么方法可以在不删除表的情况下清理数据库中的行,最好不逐个删除对象?

【问题讨论】:

  • truncate 和临时disabling referential integrity 组合起来可以解决问题吗?
  • @Avandeursen 哦,是的,谢谢!而且我认为我也可以批量截断表格。我需要的是禁用参照完整性。
  • 另一种选择可能是将@DirtiesContext 与“每次测试后”一起使用
  • 很高兴它有效@AlexandraCohen。我已经把我的评论变成了一个真正的答案:如果它对你有用,请随时接受。

标签: sql unit-testing junit h2 h2db


【解决方案1】:

要清理行,可以使用 H2 TRUNCATE TABLE 数据定义命令。

您可以使用 H2 的 SET REFERENTIAL_INTEGRITY 暂时禁用检查外键约束。

【讨论】:

    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 2011-06-10
    • 2021-01-05
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    相关资源
    最近更新 更多