spring-data-jpa 从sql文件插入数据H2数据库Spring Boot

jqjz2hbq  于 2022-11-10  发布在  Spring
关注(0)|答案(2)|浏览(245)

我尝试使用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');

型号:

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;    

}

application.properties


# 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
hfwmuf9z

hfwmuf9z1#

有许多方法可以使用 Spring Boot 初始化数据库:
1.使用JPA初始化数据库
1.使用Hibernate初始化数据库
1.使用基本SQL脚本初始化数据库
供您参考:您应该将***模式***与***数据***分开,因此您应该有两个基本脚本:

*模式.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 );

*数据库.sql:在这个文件中你可以把你的指令插入数据

INSERT INTO employees (first_name, last_name, mail, password) VALUES ('Laurent', 'GINA', 'laurentgina@mail.com', 'laurent');
  • 如果您选择使用schema.sql:您应该使用这个属性***spring.jpa.hib. ddl-auto =none***。
  • 否则(休眠)您应该使用此属性***spring.jpa.hib. ddl-auto =create-drop***

供您参考:

  • 注意:*Spring Boot 版本〈= 2.4.x*您可以选择Hibernate来创建模式使用schema.sql,但不能同时使用这两种模式.
  • 注意:spring Boot version〉= 2.5.x***如果您希望基于脚本的数据源初始化能够基于Hibernate执行的模式创建进行构建,请将***spring.jpa.defer-datasource-initialization设置为true
    **请注意,这取决于您选择的版本!**x1c 0d1x
mqkwyuun

mqkwyuun2#

有几个因素可能会导致此问题。
首先,确保您的SQL文件位于src/main/resources目录中,否则Sping Boot 将不会拾取该文件。
接下来,检查文件的权限。如果应用程序无法读取该文件,则无法加载数据。
最后,确保SQL文件的格式正确。如果文件中有任何语法错误,那么Sping Boot 将无法加载数据。

相关问题