无法使用Spring Boot(Hibernate)将初始数据添加到数据库中



我在Spring Boot应用程序中使用Hibernate,并毫无问题地填充表。但是,我正在尝试使用类路径上的import.sql将2条记录添加到其中一个已填充的表中。

INSERT INTO role(id, role_type) VALUES(1, 'ADMIN');
INSERT INTO role(id, role_type) VALUES(2, 'USER');

我还设置了以下属性:

spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.defer-datasource-initialization=true
spring.sql.init.mode=always

当我运行应用程序时,会创建表,填充数据,并创建表。然而,我得到了"执行DDL时出错:alter table user_role drop外键">错误。

当我更新spring.jpa.hibernate.ddl-auto时,如下所示,没有错误,并且创建了表。但是,记录未插入角色表:

spring.jpa.hibernate.ddl-auto= update

那么,当我运行应用程序时,如何在没有任何问题的情况下插入数据呢?

只有当spring.jpa.hibernate.ddl-auto设置为createcreate-drop时,才会执行import.sql

或者,您可以使用data.sql,它将被执行,而不考虑hibernate.ddl的配置。

使用spring.jpa.hibernate.ddl-auto= updatedata.sql应该可以解决这两个错误。

spring.sql.init.mode=always 
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto= update

使用延迟数据源