Spring JPA ddl-auto=使用初始数据创建
Spring JPA ddl-auto=create with initial data
我想使用 Spring JPA auto table 创建我的 tables 然后我想插入我自己的数据 (SQL).
为了能够做到这一点,我在 application.properties
中使用了这些行
spring.jpa.hibernate.ddl-auto=create
spring.sql.init.data-locations=\
classpath:database/sectors_data.sql,\
classpath:database/users_data.sql
spring.sql.init.mode=always
问题是,当我使用 ddl-auto=create
和 运行 我的应用程序时,它会创建 table,但不会插入数据。为了插入数据,我应该再次将 ddl-auto=create
更改为 ddl-auto=update
和 运行 我的应用程序。
我想知道有没有一种方法可以只用一个 运行,创建 table 然后插入数据,而无需使用 Flyway
等任何数据库迁移工具。
感谢您的回答。
请注意 script-based 初始化,即通过 schema.sql 和 data.sql 以及 Hibernate 一起初始化可能会导致一些问题。
或者我们禁用 Hibernate 自动模式创建:
spring.jpa.hibernate.ddl-auto=none
这将确保 script-based 初始化直接使用 schema.sql 和 data.sql 执行。
如果我们仍然希望将 Hibernate 自动模式生成与 script-based 模式创建和数据填充相结合,我们将不得不使用:
spring.jpa.defer-datasource-initialization=true
这将确保在执行 Hibernate 架构创建后,还会读取 schema.sql 以了解任何其他架构更改,并执行 data.sql 以填充数据库。
此外,script-based默认情况下仅对嵌入式数据库执行初始化,要始终使用脚本初始化数据库,我们必须使用:
spring.sql.init.mode=always
参考spring-boot-data-sql-and-schema-sql
另请参阅官方 Spring 文档 Initialize a Database Using Basic SQL Scripts
我想使用 Spring JPA auto table 创建我的 tables 然后我想插入我自己的数据 (SQL).
为了能够做到这一点,我在 application.properties
中使用了这些行spring.jpa.hibernate.ddl-auto=create
spring.sql.init.data-locations=\
classpath:database/sectors_data.sql,\
classpath:database/users_data.sql
spring.sql.init.mode=always
问题是,当我使用 ddl-auto=create
和 运行 我的应用程序时,它会创建 table,但不会插入数据。为了插入数据,我应该再次将 ddl-auto=create
更改为 ddl-auto=update
和 运行 我的应用程序。
我想知道有没有一种方法可以只用一个 运行,创建 table 然后插入数据,而无需使用 Flyway
等任何数据库迁移工具。
感谢您的回答。
请注意 script-based 初始化,即通过 schema.sql 和 data.sql 以及 Hibernate 一起初始化可能会导致一些问题。
或者我们禁用 Hibernate 自动模式创建:
spring.jpa.hibernate.ddl-auto=none
这将确保 script-based 初始化直接使用 schema.sql 和 data.sql 执行。
如果我们仍然希望将 Hibernate 自动模式生成与 script-based 模式创建和数据填充相结合,我们将不得不使用:
spring.jpa.defer-datasource-initialization=true
这将确保在执行 Hibernate 架构创建后,还会读取 schema.sql 以了解任何其他架构更改,并执行 data.sql 以填充数据库。
此外,script-based默认情况下仅对嵌入式数据库执行初始化,要始终使用脚本初始化数据库,我们必须使用:
spring.sql.init.mode=always
参考spring-boot-data-sql-and-schema-sql 另请参阅官方 Spring 文档 Initialize a Database Using Basic SQL Scripts