如何在 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 属性指定 持久性提供程序将生成哪些脚本。这 此属性的值为
none
、create
、drop-and-create
、drop
。一种 只有指定了脚本目标时才会生成脚本。如果 此属性未指定,假定脚本生成 不需要或不会
在 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 上不存在 Microsoft SQL Server 自动创建架构(application.properties)