I have a simple spring boot application with H2 in-memory database and trying to initalize data.
This is my application.config:
#Database connection
spring.datasource.url=jdbc:h2:mem:practice_db
spring.datasource.username=sa
spring.datasource.password=123456
spring.datasource.driverClassName=org.h2.Driver
#spring.datasource.initialize=true
#spring.datasource.schema=schema.sql
#spring.datasource.data=schema.sql
#Hibernate configuration
#spring.jpa.hibernate.ddl-auto = none
schema.sql
CREATE TABLE IF NOT EXISTS `Person` (
`id` INTEGER PRIMARY KEY AUTO_INCREMENT,
`first_name` VARCHAR(50) NOT NULL,
`age` INTEGER NOT NULL
);
INSERT INTO `Person` (`first_name`, `age`) VALUES ('Peter', 20);
and data.sql
INSERT INTO `Person` (`first_name`, `age`) VALUES ('John', 20);
This is my entity
/**
* Dummy data model.
* Just for test
*/
@Entity
@Table(name = "Person")
public class Person {
@Id
@GeneratedValue
@Column(name = "Id")
private Long id;
/**
* For hibernate
*/
@Version
private Integer version;
/**
* Person name
*/
@Basic(optional = false)
@Column(name = "first_name")
private String name;
/**
* Age. Primitive type can't be nullable
*/
@Basic(optional = false)
@Column(name = "age")
private int age;
Table 'Person' is created succesfully. But it has no data, although the script was executed:
09:06:29.711 5823 [main] INFO o.s.j.datasource.init.ScriptUtils - Executing SQL script from URL [file:/C:/Users/User/Desktop/students/materials/practice/target/classes/schema.sql]
09:06:29.732 5844 [main] INFO o.s.j.datasource.init.ScriptUtils - Executed SQL script from URL [file:/C:/Users/User/Desktop/students/materials/practice/target/classes/schema.sql] in 21 ms.
09:06:29.742 5854 [main] INFO o.s.j.datasource.init.ScriptUtils - Executing SQL script from URL [file:/C:/Users/User/Desktop/students/materials/practice/target/classes/data.sql]
09:06:29.748 5860 [main] INFO o.s.j.datasource.init.ScriptUtils - Executed SQL script from URL [file:/C:/Users/User/Desktop/students/materials/practice/target/classes/data.sql] in 1 ms.
09:06:29.915 6027 [main] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Building JPA container EntityManagerFactory for persistence unit 'default'
09:06:29.949 6061 [main] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [
When application is running, writing and reading data from this table works fine.
How can I initalize data on application startup?