0 h2 spring-data-jpa spring-boot
我正在尝试使用 h2 数据库和 spring boot 从 sql 文件插入数据。当我将sql文件添加到中时src/main/ressources,我成功创建了表并向其中插入数据。但是当我创建一个名为 Employee 的模型类来引用该表时,我可以创建表,但没有插入任何行。
SQL 文件:
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(250) NOT NULL, last_name VARCHAR(250) NOT NULL,
mail VARCHAR(250) NOT NULL, password VARCHAR(250) NOT NULL );
INSERT INTO employees (first_name, last_name, mail, password) VALUES
('Laurent', 'GINA', 'laurentgina@mail.com', 'laurent');
Run Code Online (Sandbox Code Playgroud)
模型:
import javax.persistence.Column; import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import
javax.persistence.GenerationType; import javax.persistence.Id; import
javax.persistence.Table;
import lombok.Data;
@Data @Entity @Table(name = "employees")
public class Employee {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="first_name")
private String first_name;
@Column(name="last_name")
private String last_name;
private String mail;
private String password;
}
Run Code Online (Sandbox Code Playgroud)
应用程序属性
#Global configuration
spring.application.name=api
#Tomcat configuration
server.port=9000
#Log level configuration
logging.level.root=ERROR
logging.level.com.openclassrooms=INFO
logging.level.org.springframework.boot.autoconfigure.h2=INFO
logging.level.org.springframework.boot.web.embedded.tomcat=INFO
#H2 Configuration
spring.h2.console.enabled=true
Run Code Online (Sandbox Code Playgroud)
小智 5
使用spring boot初始化数据库的方式有很多种:
供您参考:您应该将模式与数据分开,因此您应该有两个基本脚本:
schema.sql:在此文件中,您可以放置创建表的指令。
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(250) NOT NULL, last_name VARCHAR(250) NOT NULL,mail VARCHAR(250) NOT NULL, password VARCHAR(250) NOT NULL );
Run Code Online (Sandbox Code Playgroud)
data.sql:在此文件中,您可以放置插入数据的指令
INSERT INTO employees (first_name, last_name, mail, password) VALUES ('Laurent', 'GINA', 'laurentgina@mail.com', 'laurent');
Run Code Online (Sandbox Code Playgroud)
如果您选择使用 schema.sql :您应该使用此属性spring.jpa.hibernate.ddl-auto=none。
否则(Hibernate)你应该使用这个属性 spring.jpa.hibernate.ddl-auto=create-drop
供你参考:
注意:spring boot 版本 <= 2.4.x可以选择 Hibernate 创建 schema或使用 schema.sql,但不能同时执行两者。
注意:spring boot 版本 >= 2.5.x 如果您希望基于脚本的 DataSource 初始化能够基于 Hibernate 执行的架构创建构建,请将spring.jpa.defer-datasource-initialization 设置为 true。
| 归档时间: |
|
| 查看次数: |
4288 次 |
| 最近记录: |