我可以从 liquibase xml 调用 Java 静态函数吗?
Can I call a Java static function from liquibase xml?
我有一个正在生产的现有项目。我正在寻找更新列的值。业务方法已经准备就绪。我可以通过 liquibase xml 调用这个函数吗?我还需要将现有值从 table 传递到方法中。
<changeSet id="update_badges_hashes" author="Rakhunathan">
<update tableName="badges">
<column name="hashtags" valueComputed="${net.compant.app.util.Generator.getData('1')}" />
</update>
</changeSet>
这个实现会抛出错误,我正在寻找正确的方法。
也许我遗漏了一些东西,但据我所知,如果您需要执行某些 Java 方法,那么您唯一能做的就是创建您的自定义 changeSet。
您可以使用 customChange
:
<changeSet id="foo" author="bar">
<customChange class="your.package.liquibase.YourJavaChangeSet"/>
</changeSet>
和Java class可能看起来像这样:
public class YourJavaChangeSet implements CustomTaskChange {
@Override
public void execute(Database database) throws CustomChangeException {
// your logic here
}
@Override
public String getConfirmationMessage() {
return null;
}
@Override
public void setUp() throws SetupException {
}
@Override
public void setFileOpener(ResourceAccessor resourceAccessor) {
}
@Override
public ValidationErrors validate(Database database) {
return null;
}
}
我有一个正在生产的现有项目。我正在寻找更新列的值。业务方法已经准备就绪。我可以通过 liquibase xml 调用这个函数吗?我还需要将现有值从 table 传递到方法中。
<changeSet id="update_badges_hashes" author="Rakhunathan">
<update tableName="badges">
<column name="hashtags" valueComputed="${net.compant.app.util.Generator.getData('1')}" />
</update>
</changeSet>
这个实现会抛出错误,我正在寻找正确的方法。
也许我遗漏了一些东西,但据我所知,如果您需要执行某些 Java 方法,那么您唯一能做的就是创建您的自定义 changeSet。
您可以使用 customChange
:
<changeSet id="foo" author="bar">
<customChange class="your.package.liquibase.YourJavaChangeSet"/>
</changeSet>
和Java class可能看起来像这样:
public class YourJavaChangeSet implements CustomTaskChange {
@Override
public void execute(Database database) throws CustomChangeException {
// your logic here
}
@Override
public String getConfirmationMessage() {
return null;
}
@Override
public void setUp() throws SetupException {
}
@Override
public void setFileOpener(ResourceAccessor resourceAccessor) {
}
@Override
public ValidationErrors validate(Database database) {
return null;
}
}