我在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
设置为create
或create-drop
时,才会执行import.sql
。
或者,您可以使用data.sql
,它将被执行,而不考虑hibernate.ddl
的配置。
使用spring.jpa.hibernate.ddl-auto= update
和data.sql
应该可以解决这两个错误。
spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto= update
使用延迟数据源