I use Hibernate in my Spring Boot app and populate the tables without any problem. However, I am trying to add 2 record to one of the populated table using import.sql on the classpath.
INSERT INTO role(id, role_type) VALUES(1, 'ADMIN');
INSERT INTO role(id, role_type) VALUES(2, 'USER');
I also set the following properties:
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.defer-datasource-initialization=true
spring.sql.init.mode=always
When I run the app, tables are created and the data is populated, and tables are created. However, I got "Error executing DDL : alter table user_role drop foreign key" error.
When I update spring.jpa.hibernate.ddl-auto as shown below, there is no error and tables are created. BUT, records are not inserted to the role table:
spring.jpa.hibernate.ddl-auto= update
So, how can I insert data when I run the app without any problem?
CodePudding user response:
import.sql will only be executed provided that spring.jpa.hibernate.ddl-auto is set to create or create-drop.
also can you try adding add @OnDelete(action = OnDeleteAction.CASCADE) to your Role table to check if it fixes the foriegn key error.
Alternatively you can use data.sql it will be executed irrespective of hibernate.ddl configuration.
Using spring.jpa.hibernate.ddl-auto= update and data.sql should solve both of your error.
spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
