我正在使用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 脚本,或者我是否必须自己编写它们。任何信息不胜感激。
如果您使用的是 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