据我所知,您无法配置它。只要您使用create-drop 或create 模式,Hibernate 就会自动调用import.sql 文件。 the documentation也提到了这个,和Spring无关:
此外,如果 Hibernate 从头开始创建模式(即,如果 ddl-auto 属性设置为 create 或 create-drop),则会在启动时执行类路径根目录中名为 import.sql 的文件.
我的猜测是,您仍然希望在测试场景中继续生成表格。在这种情况下,您可能希望切换到 Spring boot 的数据源初始化,方法是在类路径上添加一个名为 schema.sql 和 data.sql 的文件。
Spring boot 启动时会自动选取该文件(仅适用于 Spring boot 2.0 中的嵌入式数据源),documentation 也提到了这一点:
Spring Boot 可以自动创建 DataSource 的模式(DDL 脚本)并初始化它(DML 脚本)。它从标准根类路径位置加载 SQL:分别为 schema.sql 和 data.sql。
现在,为了能够在测试阶段禁用加载数据,您可以使用配置文件。例如,在 Spring boot 2.x 中,您可以使用以下属性禁用此功能:
spring.datasource.initialization-mode=never # Property for Spring boot 2.0
spring.datasource.initialize=false # Property for Spring boot 1.0
注意,这将禁用架构创建和数据加载 SQL 文件。仅禁用 data.sql 文件是不可能的,但可以通过重命名 Spring boot 将查找的默认文件名来使用一个简单的技巧来实现:
spring.datasource.data=somethingelse.sql
如果您仅在测试期间配置此属性,Spring boot 将查找名为 somethingelse.sql 的文件,并且不会拾取您的 data.sql 文件。在使用 dev 配置文件运行时,您丢弃此属性,Spring boot 将查找(并找到)data.sql。
同时适用于 Spring boot 的 schema.sql/data.sql 和 Hibernate 的 import.sql 的另一种方法是使用 Maven 配置文件并在运行测试时加载不同的类路径文件夹。但是,我不建议这样做,因为这会使在 IDE 中运行测试变得更加困难。