我想使用Spring JPA自动创建表来创建我的表,然后我想插入我自己的数据(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
并运行我的应用程序时,它创建了表,但没有插入数据。要使其插入数据,我应该将ddl-auto=create
更改为ddl-auto=update
并再次运行应用程序。
我想知道有没有一种方法可以只运行一次,创建表,然后插入数据,而不使用任何数据库迁移工具,如Flyway
。
谢谢你的回答。
1条答案
按热度按时间dzjeubhm1#
请注意,基于脚本的初始化,即通过schema.sql和data.sql以及Hibernate一起初始化可能会导致一些问题。
我们可以禁用Hibernate自动模式创建:
字符串
这将确保直接使用
schema.sql
和data.sql
文件执行基于脚本的初始化。如果我们仍然希望Hibernate自动模式生成与基于脚本的模式创建和数据填充结合,我们将不得不用途:
型
这将确保在执行Hibernate模式创建之后,还会读取
schema.sql
以获取任何额外的模式更改,并执行data.sql
以填充数据库。此外,基于脚本的初始化默认情况下只对嵌入式数据库执行,要始终使用脚本初始化数据库,我们必须用途:
型
参考