首页 > 解决方案 > Spring DataSource:EmbeddedDatabaseBuilder addScript() 抛出 FileNotFoundException

问题描述

我正在使用 Spring-Boot 和内存中的 H2 数据库。我正在尝试使用 DataSource Bean 通过配置类来配置数据库。我希望在应用程序启动时执行一个脚本,该脚本在我的数据库中插入一些行。因此我使用addScript(). EmbeddedDatabaseBuilder但我继续收到 FileNotFoundExceptions。

实体是正确的,并且创建了正确的表,我可以使用 h2 控制台进行检查。此外,文件 import.sql 确实存在于正确的文件夹中。Intellij 确实找到了这个文件。

import.sql文件:

INSERT INTO USER (id, user_name, password, first_name, last_name, email) VALUES
(0,'test','12345','Test','Entry','example@mail.com'),
@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
       return new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.H2)
                .addScript("db/sql/import.sql")
                .build();
    }

}
Caused by: java.io.FileNotFoundException: class path resource [db/sql/import.sql] cannot be opened because it does not exist

我希望在应用程序启动时正确执行 sql 语句。

标签: javaspringspring-bootspring-data-jpaspring-data

解决方案


Your files should go in resources folder. The hierarchy should look like this:

src    
├───main
│   ├───java
│   │   └───com
│   │       └───YourCode
│   │           │   Application.java
│   │           └───config
│   │                   DataSourceConfig.java
│   └───resources   
│       └───db   
│           └───sql
│               import.sql         
└───test
    └───java

推荐阅读