Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何使用java代码以编程方式创建liquibase dbchangelog?_Spring_Jpa_Liquibase_Changelog - Fatal编程技术网

Spring 如何使用java代码以编程方式创建liquibase dbchangelog?

Spring 如何使用java代码以编程方式创建liquibase dbchangelog?,spring,jpa,liquibase,changelog,Spring,Jpa,Liquibase,Changelog,我最近使用liquibase更改集generateChangelog、diff和updateSQL创建更改日志,以查找差异并分别生成ddl脚本 我的更改日志看起来像这样,它是一个xml文件 <?xml version="1.0" encoding="UTF-8"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001

我最近使用
liquibase
更改集
generateChangelog
diff
updateSQL
创建更改日志,以查找差异并分别生成ddl脚本

我的更改日志看起来像这样,它是一个xml文件

<?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>

我手动创建了这个xml。我试图通过java代码创建相同的更改日志。 我很难弄清楚如何在java中实现这一点。有人能帮我解释一下吗

我已经在我的项目中添加了
liquibase 3.5.5
作为
maven依赖项

final Path changeLogPath = Paths.get("/tmp/mychangelog.xml");

final DatabaseChangeLog changeLog = new DatabaseChangeLog(changeLogPath.toString());
changeLog.setPhysicalFilePath("mychangelog.xml");

final CreateTableChange createTableChange = new CreateTableChange();
createTableChange.setTableName("firsttable");
createTableChange.addColumn(new ColumnConfig().setName("col1").setType("VARCHAR(20)"));

final ChangeSet changeSet = new ChangeSet("id1", "author", Boolean.FALSE, Boolean.FALSE, null, null, null, changeLog);
changeSet.addChange(createTableChange);

try (OutputStream os = new FileOutputStream(changeLogPath.toString())){
    serializer.write(changeLog.getChangeSets(), os);
}

成功了,谢谢。。。有主意了。。。。如何使用此更改日志使用java代码生成脚本?检查