Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to see the schema sql (DDL) in spring boot?

How can I see the DDL SQL generated by Hibernate for building the schema from the JPA mappings? I am using the embedded HSQL db.

I tried the following and none of them worked in Spring-Boot 1.3.5.RELEASE.

  • Adding the following to application.properties file
    • debug=true
    • spring.jpa.properties.hibernate.show_sql=true
  • Set org.hibernate.SQL level to debug in logback.xml
  • Steps listed at http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

Those only show me the sql issued by Hibernate for queries. I am looking for the DDL schema sql issued by Hibernate due the following property:

spring.jpa.hibernate.ddl-auto=create-drop
like image 363
Suneel Avatar asked Jun 06 '16 01:06

Suneel


1 Answers

Try with this property and value:

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

Do not forget to also set this property:

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

From the JPA 2.1 Specifiation, page 370:

javax.persistence.schema-generation.scripts.action

The javax.persistence.schema-generation.scripts.action property specifies which scripts are to be generated by the persistence provider. The values for this property are none, create, drop-and-create, drop. A script will only be generated if the script target is specified. If this property is not specified, it is assumed that script generation is not needed or will

In Spring Boot you can define those two properties in your application.properties file:

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

Here is a blog post about JPA schema generation with further information about these and other properties: http://www.thoughts-on-java.org/standardized-schema-generation-data-loading-jpa-2-1/

like image 141
Thomas Traude Avatar answered Nov 01 '22 01:11

Thomas Traude