如何使用Liquibase生成DDL脚本?

时间:2019-03-20 07:20:00

标签: java spring-boot jpa liquibase

我有一个组件对象

package com.entities;

@Entity
public class Author {

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 private Integer id;

 @Column(nullable = false, unique = true)
 private String name;

 protected Author() {
// for JPA
 }

public Author(Integer id, String name) {
   this.id = id;
   this.name = name;
}

public Integer getId() {
  return id;
}

public String getName() {
  return name;
}

@Override
public String toString() {
  return "Author{" +
    "id=" + id +
    ", name='" + name + '\'' +
    '}';
  }
}

我想生成DDLcreate,alter,drop)脚本来存储对象。

我不希望任何自动ddl配置为我创建表,而是希望Liquibase为我生成表。我怎样才能做到这一点 ?我将能够提供相同的元数据。我需要JPA的脚本。

我尝试通过将databaseChangeLog提供给Liquibase来进行生成,并且这样子

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
 xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
     http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

 <changeSet author="John (generated)" id="1439225004329-1">
    <createTable tableName="Author ">
        <column autoIncrement="true" name="id" type="BIGINT">
            <constraints primaryKey="true"/>
        </column>
        <column name="name" type="VARCHAR(255)"/>
      </createTable>
    </changeSet>

 </databaseChangeLog>

此处,changelog期望的类型是db上的列的类型。如何使用Liquibase从属性类型为字符串的(属于属性名称)解析类型(VARCHAR)?

0 个答案:

没有答案