首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用@Configuration类

未调用@Configuration类
EN

Stack Overflow用户
提问于 2017-02-11 16:26:05
回答 1查看 97关注 0票数 1

在我的spring应用程序中,我使用了h2,并且我试图在db中填充数据。

下面是我的类:

代码语言:javascript
复制
@Entity
@Data
public class User {

    @Id
    @GeneratedValue
    Long id;

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

然后我看到了this question,并创建了以下类来填充其中的数据

代码语言:javascript
复制
@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-folder schema.sql中,我有:

代码语言:javascript
复制
insert into user (id,activated,password,role,username)values(4,true,'12345','Admin','admin');

schema.sql文件是:

代码语言:javascript
复制
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,当我运行应用程序时,user表上没有记录

我将调试设置为System.out.println("data shoul be populated");,但它从未在我的控制台中打印出来

EN

回答 1

Stack Overflow用户

发布于 2017-02-11 18:02:46

如果您查看关于数据库初始化的Spring Data JPA参考手册:link,它指出框架在初始化期间需要考虑两个不同的文件:schema.sqldata.sql

如果您想覆盖模式的自动生成(或忽略它),则需要填写schema.sql

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

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

代码语言:javascript
复制
spring.datasource.initialize=true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42173848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档