hibernate - 带有 HSQLDB 的 TDD -- 删除外键

标签 hibernate spring tdd foreign-keys hsqldb

我正在使用 HSQLDB 进行数据层集成测试,这很棒。但是,我发现我的外键约束妨碍了我的测试。例如,要在一个表上测试一个简单的选择,我必须将虚拟数据插入到另外五个表中。这让我想扔东西。

我在整个模型代码中都有 JPA 注释,并且已经配置了 Hibernate 以在配置中重新创建模式 (hbm2ddl.create-drop)。生成表时,连接被正确解释为外键约束。

我想要的是:

  • 最初不创建外键(理想的、最干净的),或
  • 找到一种以编程方式删除数据库中所有外键的方法(有点 hacky 但可以完成工作)

  • 如果有帮助,我将使用 Spring Autowiring 这些测试。有问题的测试继承自 AbstractTransactionalJUnit4SpringContextTests .

    你怎么看?这能做到吗?

    最佳答案

    您可以使用以下指令停用 FK 约束:

    SET REFERENTIAL_INTEGRITY FALSE;
    

    您可以通过 JDBC Statement 执行它在您的测试方法之前(并将其设置回 TRUE 之后)。

    关于hibernate - 带有 HSQLDB 的 TDD -- 删除外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685274/

    相关文章:

    java - 在 Wicket 口中测试抽象页面类

    javascript - 在 TDD 中,测试能否从一开始就是绿色的?

    java - JPA:覆盖自动生成的 ID

    java - @Version 和 @LastModifiedDate

    java - 当我的 session 创建策略设置为 STATELESS 时,为什么 Spring Security 的 SessionManagementFilter 仍在运行?

    java - 手动调用 Spring Annotation Validation

    c# - 你是如何扩展你的断言类的

    hibernate - 在hibernate中使用两个字段作为唯一id

    java - 如何修复 "com.jdbc.SQLServerException: Invalid column name ' taxi_id' "

    用于选择性类或方法的 Java CGlib 增强器