Java Spring引导在schema.sql存在的情况下创建实体之前运行data.sql

Java Spring引导在schema.sql存在的情况下创建实体之前运行data.sql,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,注意:我打开了一个关于Spring引导存储库的问题。以下是链接 我试图在实体中插入一些行,以便在开发人员机器上使用H2数据库进行测试。我使用的是data.sql 它工作正常,创建实体,然后运行sql将数据插入实体生成的表中 但是,我需要创建一些没有实体类的其他表,所以我使用schema.sql来处理这些表。问题是,只要我将schema.sql添加到项目中,Spring Boot就会在创建实体之前运行data.sql,并以Table not found异常结束 如何使用schema.sql和实体

注意:我打开了一个关于Spring引导存储库的问题。以下是链接

我试图在实体中插入一些行,以便在开发人员机器上使用H2数据库进行测试。我使用的是
data.sql

它工作正常,创建实体,然后运行sql将数据插入实体生成的表中

但是,我需要创建一些没有实体类的其他表,所以我使用
schema.sql
来处理这些表。问题是,只要我将
schema.sql
添加到项目中,Spring Boot就会在创建实体之前运行
data.sql
,并以
Table not found
异常结束

如何使用
schema.sql
和实体获取
data.sql
同时上课

下面是该项目的示例代码

Git链接用于功能性maven项目,以重现问题

package.com.test;
导入javax.persistence.Entity;
导入javax.persistence.GeneratedValue;
导入javax.persistence.Id;
导入javax.persistence.Table;
导入org.springframework.boot.SpringApplication;
导入org.springframework.boot.autoconfigure.springboot应用程序;
@SpringBoot应用程序
公共类TestDataSql应用程序{
公共静态void main(字符串[]args){
run(TestDataSqlApplication.class,args);
}
}
@实体
@表(name=“用户详细信息”)
类用户详细信息{
@身份证
@生成值
私人长id;
私有字符串名称;
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}
schema.sql

创建表测试(id int(10),名称varchar(10));
data.sql

插入用户详细信息值(1,'user1');
在用户_详细信息中插入值(2,'user2');
在用户_详细信息中插入值(3,'user3');
编辑*

正如
@abaghel
建议的那样,将
data.sql
重命名为
import.sql
可以工作,但是
import.sql
无条件运行。那不是我需要的

对于测试,我有一个maven概要文件,它激活一个特定的
spring.datasource.platform=h2
,这反过来又迫使spring加载
schema-h2.sql
data-h2.sql
。不幸的是,平台对import.sql没有影响,所以将其重命名为import-h2.sql会阻止Spring加载它

这是一个分支,它通过对平台的更改来重现这个问题


数据.sql
重命名为
导入.sql
,应用程序将无误启动。请参阅相关文档。

感谢您的回复,它确实可以使用
import.sql
,但我必须使它可以使用活动的
spring.datasource.platform
值。我已经用修改编辑了这个问题。
import.sql
不是由spring运行的,而是由hibernate检测并加载的。因此它不遵守Spring Boot对
data.sql
schema.sql
的规则。同时,将不同的数据库管理方法结合起来可能不是一件好事(imho),而且可能会令人困惑。我建议禁用hibernate创建模式,然后将所有模式创建逻辑放在
schema.sql
]@M.Deinum中。谢谢您提供的信息,您是说这无法完成吗?我不知道在实体创建之前调用
data.sql
的原因是什么,只有在存在
schema.sql
的情况下才会创建实体,而它所做的一切只是导致问题。项目需要一些现有表中的内容,我在
schema-h2.sql
中创建这些表只是为了测试。新表将由实体生成,因此我不能仅使用一个。为什么不呢,您可以将整个模式放在
schema.sql
imho中,您不应该依赖hibernate创建模式(至少在您的生产环境中,您不希望对其进行更多控制)。将
schema.sql
data.sql
与hibernate结合起来是一个棘手的问题。我认为这是Spring Boot的一个问题,在github上创建了bug,并在上面的帖子中添加了指向它的链接。谢谢你的回复。我将尝试使用Java代码而不是
data.sql