【问题标题】:Spring boot is not saving data of data.sql file into h2 database on initializationSpring Boot 在初始化时未将 data.sql 文件的数据保存到 h2 数据库中
【发布时间】:2021-11-30 01:51:59
【问题描述】:

EmployeeModelRead.java

package com.batchjob.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "EMPLOYEE_MODEL_READ")
public class EmployeeModelRead {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private long id;

    @Column(name = "NAME")
    private String name;
    @Column(name = "DOJ")
    private String doj;
    @Column(name = "AGE")
    private int age;
    @Column(name = "ROLE")
    private String role;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDoj() {
        return doj;
    }

    public void setDoj(String doj) {
        this.doj = doj;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public EmployeeModelRead(long id, String name, String doj, int age, String role) {
        super();
        this.id = id;
        this.name = name;
        this.doj = doj;
        this.age = age;
        this.role = role;
    }

    public EmployeeModelRead() {
        super();
    }

}

schema.sql

drop table if exists employee_model_read;

create table EMPLOYEE_MODEL_READ(
  ID BIGINT AUTO_INCREMENT PRIMARY KEY,
  AGE INTEGER(10),
  DOJ VARCHAR(255),
  NAME VARCHAR(255),
  ROLE VARCHAR(255)
);

data.sql

insert into employee_model_read(AGE,DOJ,NAME,ROLE) values (23,'25-09-2020','RAM','Front End Developer');

application.properties

spring.datasource.url=jdbc:h2:mem:batchjob
spring.h2.console.enabled=true
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.batch.job.enabled=false

data.sql 文件的数据未在 H2-Database 中获取。 H2-Database 在其他情况下工作正常。我正在将 JPA 用于其他与数据库相关的操作。如果您想要其他文件,请告诉我,以便我上传。 请帮助我知道这不起作用。

【问题讨论】:

  • 文件在哪里?它们在正确的目录中吗?
  • 是的,SQL 文件在资源文件夹中。所有其他语法都正确吗?

标签: java database spring-boot jpa in-memory-database


【解决方案1】:

我并不完全了解所有上下文。为什么不在 application.yml 中设置ddl-auto config 的值。如下所示。就我而言,它正在工作。

注意如果你设置ddl-auto是验证,你必须匹配schema.sql的列和实体的字段。

spirng: 
  jpa:
    hibernate:
      ddl-auto: validate

Spring 文档说 In a JPA-based app, you can choose to let Hibernate create the schema or use schema.sql, but you cannot do both. Make sure to disable spring.jpa.hibernate.ddl-auto if you use schema.sql.here 中。

【讨论】:

    【解决方案2】:

    将此行添加到我的 application.properties 文件后,代码就可以工作了。

    spring.jpa.hibernate.ddl-auto= update
    

    【讨论】:

      猜你喜欢
      • 2019-11-29
      • 2018-03-22
      • 2020-07-08
      • 2021-10-06
      • 2017-06-10
      • 2017-12-18
      • 2021-08-12
      • 2021-09-29
      • 2016-10-13
      相关资源
      最近更新 更多