【问题标题】:Hibernate automatic schema generation and extra tablesHibernate 自动模式生成和额外的表
【发布时间】:2013-09-20 15:30:54
【问题描述】:

在我的 jUnit 测试中,hibernate 创建了模式,并且我有一个 import.sql 来插入测试数据。 Hibernate 当然只会从 JPA 对象创建表。 我想在运行 JUnit 测试时创建一些额外的表。没有 JPA 对象的表。

我尝试将 create 语句放在 import.sql 中,但没有奏效。

【问题讨论】:

    标签: hibernate schema


    【解决方案1】:

    您必须在 Hibernate 配置文件中将 import.sql 文件的路径指定为 hibernate.hbm2ddl.import_files 属性吗?如果您已指定此路径但仍无法正常工作,请确保它指的是您的 import.sql 文件的正确路径。我认为可能有一个错字或类似的东西

    编辑:

    正如this帖子中提到的:

    仅当 hbm2ddl.auto = create-drop 时才会加载脚本。进口 文件在所有其他选项上都被忽略。注意只有单行 此文件中允许使用语句。

    【讨论】:

    • import.sql 已加载...所有插入语句都已执行。但我的创建表语句不是。
    • 对不起,我一开始没有注意到。您可以只在文件中指定 DML 语句(如插入、删除或更新)。好像不能用它来新建表
    • 你为什么要为你的单元测试创​​建这些表?它们是临时的吗?
    • 这些表是原始表的历史表。我并希望对此进行 Junit 测试.. 验证数据是否在删除和更新操作时被移动到历史表中。
    • 你试过dbunit吗?它仅用于单元测试数据库操作,并允许您在每个测试用例或测试套件之前/之后插入/删除数据。也许可以帮助你或给你一些想法
    【解决方案2】:

    在运行测试用例之前创建未映射到休眠对象的所需表会很好。

    你是如何执行 import.sql 的?如果您在数据库级别具有所需的访问权限,则可以像 hibernate 一样从 java 创建表

    【讨论】:

    • import.sql 由 hibernate 自动运行。在这里,我有测试数据的插入语句,效果很好。
    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2019-04-27
    • 2022-08-18
    相关资源
    最近更新 更多