gpt4 book ai didi

java - @Configuration类没有被调用

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:42 25 4
gpt4 key购买 nike

在我的 Spring 应用程序中,我正在使用 h2,并且我正在尝试填充数据库内的数据。

这是我的类(class):

@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("datashould be populated");,但它永远不会打印在我的控制台中

最佳答案

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

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

创建架构后,Spring 就会调用 data.sql 中包含的语句。这是您要放置插入语句的位置。如果您将它们放在 schema.sql 中,并且不在这些插入之前放置 DDL 语句,那么您将插入到不存在的表中。

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

spring.datasource.initialize=true

关于java - @Configuration类没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42173848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com