【发布时间】:2014-02-10 14:30:06
【问题描述】:
上下文:使用 Spring Boot 0.5.0-M7、MySQL 和 Commons DBCP、Java 配置、@EnableAutoConfiguration 设置。
我已经定义了应用程序的DataSource bean、JpaVendorAdapter bean、LocalContainerEntityManagerFactoryBean 和TransactionManager bean,并具有特定的配置以支持 DBCP 和一些 Hibernate 设置。在应用程序启动时,DataSource 肯定受到尊重(调试确认),但其他 bean 被忽略。这似乎是JpaBaseConfiguration 类的结果,该类由WebMvcConfiguration 及其安全过滤器之一引入。无论如何,除其他外,问题在于 Hibernate 设置将 hbm2ddl(架构导出)设置为 drop-create,这样每次服务器重新启动时我都会丢失数据。
我查看了源代码,发现似乎可以设置将在JpaBaseConfiguration 中得到尊重的环境变量,但这似乎无法设置 bean 来完成相同的工作。我尝试排除一些与数据相关的自动配置类无济于事。对于设置我可能缺少的非默认数据配置是否还有其他期望?
【问题讨论】:
-
MySQL 的 ddl 设置应为“无”。你确定你没有使用嵌入式数据库吗?
-
非常确定,我在调试日志中看到了与 MySQL 的连接,我的表有数据,重新启动时它已被删除并重新创建(在 MySQL Workbench 中确认)调试到 SchemaExport 显示了 drop-create 设置生效。我将尝试使用 SNAPSHOT 构建并查看行为是否发生变化。
标签: java spring jpa spring-boot