【发布时间】:2015-12-26 14:05:18
【问题描述】:
我正在尝试找出 Spring Hibernate - MySQL 的关系。我的目的是,当我启动程序时,它会在类路径中执行import.sql 文件。我想在不破坏现有表的情况下做到这一点。我找到了一些关于在启动时执行 sql 文件的文档。
http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html
官方春季文档说;
另外,启动时会执行classpath根目录下的import.sql文件。
但是,Spring 破坏了我的表,然后执行 import.sql 文件。有没有办法在不丢失现有数据的情况下执行 .sql 文件?
在下面的问题中,他几乎想要和我一样的东西。
How to import initial data to database with Hibernate?
但是;
这也仅在 hbm2ddl.auto 设置为 create 或 create-drop 时才有效。
我搜索了很多,但找不到方法。长话短说,如何在启动时运行 .sql 语句而不破坏数据库?
【问题讨论】:
-
进一步阅读... Section about JDBC 不要使用 Hibernate 或 JPA 来初始化数据库,只需使用 JDBC。改为添加
data.sql。 -
您可以将数据群放在应用程序范围的非延迟初始化 bean 中(并从那里运行本机 sql 查询)..
-
AFAIK,在配置 Hibernate 时,您可以要求它在每次以属性
<property name="hbm2ddl.auto">create-drop</property>开头时重新创建数据库模式。一定要设置为最多validate。 -
@M.Deinum,我阅读了该部分并进行了更改,但它没有执行 data.sql 文件。这是我所做的更改;
application.propertiesspring.datasource.initialize=true spring.datasource.data= classpath: data.sql hibernate.hbm2ddl.auto = 和我在 src/main/resources 文件夹中的data.sql文件,如application.properties文件。 -
您不需要更改任何内容,只需添加
data.sql其他所有内容都可以保持原样。该文件将默认执行。另外请不要添加代码,因为 cmets 会用它来改进您的问题。
标签: java mysql spring hibernate spring-mvc