@Configuration类未被调用

时间:2017-02-11 08:26:05

标签: java spring hibernate

在我的spring应用程序中,我使用的是h2,我正在尝试在db中填充数据。

这是我的班级:

@Entity
@Data
public class User {

    @Id
    @GeneratedValue
    Long id;

    String  username;
    String  password;
    String  role;
    boolean activated;
}

然后我看到this问题,并使下面的类填充其中的数据

@Configuration

public class DataBaseInitializer {

@Value("classpath:schema.sql")
private Resource schemaScript;


@Value("classpath:data.sql")
private Resource dataScript;

@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
    final DataSourceInitializer initializer = new DataSourceInitializer();
    initializer.setDataSource(dataSource);
    initializer.setDatabasePopulator(databasePopulator());
    return initializer;
}

    private DatabasePopulator databasePopulator() {
        final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
        populator.addScript(schemaScript);
        populator.addScript(dataScript);
       System.out.println("data shoul be populated");
        return populator;
        }
}

并在src/main/resources - 文件夹schema.sql中我有:

insert into user (id,activated,password,role,username)values(4,true,'12345','Admin','admin');

schema.sql文件是:

create table 
    if not exists
        user (  id int not null primary key,
                username varchar(50) not null,
                password varchar(50) not null, 
                activated boolean not null,
                role varchar(50) not null);

我添加了spring.datasource.initialize=true 不幸的是,当我运行应用程序时,用户表上没有记录

我将调试设置为System.out.println("data shoul be populated");,但它永远不会在我的控制台中打印

1 个答案:

答案 0 :(得分:0)

如果查看有关数据库初始化的Spring Data JPA参考手册:link,它指出有两个不同的文件,框架在初始化期间考虑:schema.sql和{{1} }。

如果要覆盖架构的自动生成(或省略),请填写data.sql

一旦创建了模式,spring就会调用schema.sql中包含的语句。这是您要放置insert语句的位置。如果将它们放在data.sql中并且不在这些插入之前放置DDL语句,那么您将插入不存在的表。

在您的application.properties文件中,您可能还需要:

schema.sql