提问者:小点点

是否可以从我的 Spring 引导应用程序自动生成 SQL 脚本?


我正在使用PostgreSQL 10、Java 11、STS 4,并试图构建一个Spring Boot 2应用程序。在Django和Rails中,有一些工具允许您在构建模型后自动生成SQL脚本。Java/Spring是否也存在这种情况?我创建了这个application.properties文件

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

spring.jpa.hibernate.ddl-auto=create

spring.jpa.hibernate.show-sql=true

spring.datasource.url=jdbc:postgresql://${PG_DB_HOST:localhost}:5432/${PG_DB_NAME}

spring.datasource.username=${PG_DB_USER}
spring.datasource.password=${PG_DB_PASS}

flyway.url = jdbc:postgresql://${PG_DB_HOST:localhost}:5432/${PG_DB_NAME}
flyway.schemas = ${PG_DB_NAME}
flyway.user = ${PG_DB_USER}
flyway.password = ${PG_DB_PASS}

我有这个Java实体...

import java.util.UUID;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "Occasions")
public class Occasion {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
    private UUID id;

    @Column(name="name")
    private String name;
    
}

但我不清楚如何使用我的实体自动生成 SQL 脚本,或者我是否必须自己编写它们。任何信息不胜感激。


共2个答案

匿名用户

如果您使用的是 spring-boot,则默认情况下是 jpa Hibernate框架。

使用此框架不需要创建 DDL 脚本,因为当您的应用程序启动时,会根据您的配置创建表:@Entity、@Table等

因此,只需使用以下参数运行应用程序:create-drop

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

并查看数据库以搜索新表。

参考:

https://docs . spring . io/auto repo/docs/spring-boot/1 . 1 . 0 . m1/reference/html/how to-database-initial ization . html

匿名用户

放在应用程序属性上:

spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql

参见:https://stackoverflow.com/a/36966419/4506703