【发布时间】:2017-06-10 00:17:55
【问题描述】:
我在应用程序初始化时将数据加载到内存数据库时遇到问题。我创建了包含表结构和初始数据的 schema.sql 和 data.sql 文件。
schema.sql:
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(64) NOT NULL,
password VARCHAR(64)
);
和data.sql:
INSERT INTO users (id, username, password) VALUES
(1, 'usr1', 'bigSecret'),
(2, 'usr2', 'topSecret');
我正在使用JpaRepository 处理数据层:
public interface UserRepository extends JpaRepository<User, Long> {
}
而且我还配置了application.properties
spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
但是当我打电话时
List<User> users = userRepository.findAll();
用户实体
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue
private Long id;
private String username;
private String password;
public User() { }
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
我得到一个空列表,但我应该从我的内存 H2 数据库中获取两个预先填充的用户。内存数据库有什么问题? 谢谢。
【问题讨论】:
-
你把这些脚本放在哪里了?
-
我想知道您的网址是否可以使用额外的空间
DB_CLOSE_DELAY=- 1;=>DB_CLOSE_DELAY=-1; -
你能显示你的
User实体吗 -
@Maciej Kowalski 我已将脚本放入 /src/main/resources 中,似乎它们已被应用程序读取。
-
@alexbt 我删除了空间并且结果相同 - 没有从文件中提取数据
标签: java spring spring-boot spring-data-jpa h2