【发布时间】:2017-06-29 15:43:53
【问题描述】:
在我的 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");,但它从未在我的控制台中打印出来
【问题讨论】:
-
你使用的是hibernate还是jpa @Entity?如果是 JPA,那么您可以查看规范并设置属性。 “spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=some-schema.sql”和“spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create”休眠与弹簧数据相似。