Spring boot не сохраняет данные файла data.sql в базу данных h2 при инициализации

#java #database #spring-boot #jpa #in-memory-database

Вопрос:

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();
    }

}
 

схема.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)
);
 

данные.sql

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

применение.свойства

 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-базе данных. H2-База данных отлично работает для остальных других случаев. Я использую JPA для других операций, связанных с БД. Если вам нужны какие-то другие файлы, пожалуйста, скажите мне, чтобы я мог их загрузить.
Пожалуйста, помогите мне понять, почему это не работает.

Комментарии:

1. Где файлы? Находятся ли они в правильном каталоге?

2. Да, файлы SQL находятся в папке ресурсов. Все остальные синтексы верны?

Ответ №1:

Я не знаю точно всего контекста. Почему бы вам не установить значение ddl-auto конфигурации в файле application.yml. Как показано ниже. В моем случае это работает.

Обратите внимание, что если вы установили ddl-auto значение проверить, вам необходимо сопоставить столбцы schema.sql и поля сущности.

 spirng: 
  jpa:
    hibernate:
      ddl-auto: validate
 

Весенние документы говорят об этом 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. здесь.

Ответ №2:

После добавления этой строки в мой файл application.properties код сработал.

 spring.jpa.hibernate.ddl-auto= update