Могу ли я вызвать функцию Java stati c из liquibase xml? - PullRequest
1 голос
/ 30 апреля 2020

У меня есть существующий проект, который находится на производстве. Я ищу, чтобы обновить значение столбца. И бизнес-методы готовы. Могу ли я вызвать эту функцию через liquibase xml? Мне также необходимо передать существующее значение из таблицы в метод.

<changeSet id="update_badges_hashes" author="Rakhunathan">
        <update tableName="badges">
            <column name="hashtags"  valueComputed="${net.compant.app.util.Generator.getData('1')}" />
        </update>
</changeSet>

Эта реализация выдает ошибку, и я ищу правильный способ сделать это.

1 Ответ

1 голос
/ 01 мая 2020

Возможно, я что-то упускаю, но, насколько мне известно, если вам нужно выполнить какой-то метод Java, то единственное, что вы можете сделать, - это создать свой собственный набор изменений.

Вы можете использовать customChange:

<changeSet id="foo" author="bar">
    <customChange class="your.package.liquibase.YourJavaChangeSet"/>
</changeSet>

И Java класс может выглядеть так:

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;
    }
}
...