如何在 Spring Boot 中查看模式 sql (DDL)?

Posted

技术标签:

【中文标题】如何在 Spring Boot 中查看模式 sql (DDL)?【英文标题】:How to see the schema sql (DDL) in spring boot? 【发布时间】:2016-10-05 12:40:22 【问题描述】:

如何查看 Hibernate 为从 JPA 映射构建模式而生成的 DDL SQL?我正在使用嵌入式 HSQL 数据库。

我尝试了以下方法,但它们都没有在 Spring-Boot 1.3.5.RELEASE 中工作。

将以下内容添加到 application.properties 文件 debug=true spring.jpa.properties.hibernate.show_sql=true 在 logback.xml 中设置 org.hibernate.SQL 级别调试 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html 列出的步骤

那些只显示 Hibernate 为查询发出的 sql。由于以下属性,我正在寻找 Hibernate 发布的 DDL 模式 sql:

spring.jpa.hibernate.ddl-auto=create-drop

【问题讨论】:

你见过this SO question吗? @TimBiegeleisen 是的,但它们与上面相同。它们只显示查询,而不是应用启动时 Hibernate 发出的 DDL。 show-sql 只显示 DML,您需要添加 debug=true toapplication.properties 才能看到 DDL @Shibashis 我试过debug=true,正如我的帖子中提到的那样。那仍然没有显示 DDL。 【参考方案1】:

试试这个属性和值:

javax.persistence.schema-generation.scripts.action=create

别忘了也设置这个属性:

javax.persistence.schema-generation.scripts.create-target=my-schema.sql

来自JPA 2.1 Specifiation,第 370 页:

javax.persistence.schema-generation.scripts.action

javax.persistence.schema-generation.scripts.action 属性指定 持久性提供程序将生成哪些脚本。这 此属性的值为nonecreatedrop-and-createdrop。一种 只有指定了脚本目标时才会生成脚本。如果 此属性未指定,假定脚本生成 不需要或不会

在 Spring Boot 中,您可以在 application.properties 文件中定义这两个属性:

spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=build/my-schema.sql
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create

这是一篇关于 JPA 模式生成的博客文章,其中包含有关这些和其他属性的更多信息: http://www.thoughts-on-java.org/standardized-schema-generation-data-loading-jpa-2-1/

【讨论】:

提示:这会禁用实际的模式生成。如果要创建 schema.sql 脚本并希望 hibernate 在实际数据库中创建架构,则必须添加 spring.jpa.properties.javax.persistence.schema-generation.database.action=create 文章详细介绍了这个:baeldung.com/spring-data-jpa-generate-db-schema

以上是关于如何在 Spring Boot 中查看模式 sql (DDL)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 项目中使用 Log4jdbc 记录 SQL 查询、它们的参数和结果?

如何在 Spring Boot 中记录 SQL 语句?

在 Spring Boot 中,如何干掉 if else!

如果 Spring Boot 上不存在 Microsoft SQL Server 自动创建架构(application.properties)

如何在 Spring Boot 中启用 H2 数据库服务器模式

使用 Spring Boot 和 Spring JDBC 在 oracle 中设置默认模式 = SOMETHING