2

我想为我的项目添加 Liquibase DB 迁移支持。它也使用 Spring Boot。现在我想通过使用 Hibernate 和 JPA 实体类来生成没有数据库连接的更改日志。但它会抛出一个错误:

mvn liquibase:generateChangeLog
[...]
Error setting up or running Liquibase: javax.persistence.PersistenceException: Unable to resolve persistence unit root URL: class path resource [] cannot be resolved to URL because it does not exist
[...]

我没有persistentunit XML 文件,因为这一切都是由Spring Boot 在运行时完成的。该项目是一个多模块项目。Liquibase 插件配置位于父 POM 中。实体位于子模块中。

这是 Liquibase 的 Maven 插件配置:

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>${liquibase.version}</version>
    <dependencies>
        <dependency>
            <groupId>org.liquibase.ext</groupId>
            <artifactId>liquibase-hibernate5</artifactId>
            <version>3.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
    </dependencies>
    <configuration>
        <url>hibernate:spring:org.kitodo.mediaserver.core.db.entities?dialect=liquibase.ext.hibernate.database.HibernateGenericDialect&amp;hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&amp;hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy</url>
        <driver>liquibase.ext.hibernate.database.connection.HibernateDriver</driver>
    </configuration>
</plugin>

如果我使用数据库连接而不是 hibernate:spring:... 它可以工作。

仅通过拥有实体,如何在没有数据库连接的情况下生成更改日志?

4

1 回答 1

0

我遇到了同样的问题,为了解决它,我添加了包含您的实体的 maven 项目的依赖项。例如:

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>${liquibase.version}</version>
    <dependencies>
        <dependency>
            <groupId>org.liquibase.ext</groupId>
            <artifactId>liquibase-hibernate5</artifactId>
            <version>3.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>

        <!-- Add your maven project which hosts your entities classes -->
        <dependency>
            <groupId>org.kitodo.mediaserver</groupId>
            <artifactId>org.kitodo.mediaserver.core.db.entities</artifactId>
            <version>1.0.0</version>
        </dependency>

    </dependencies>
    <configuration>
        <url>hibernate:spring:org.kitodo.mediaserver.core.db.entities?dialect=liquibase.ext.hibernate.database.HibernateGenericDialect&amp;hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&amp;hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy</url>
        <driver>liquibase.ext.hibernate.database.connection.HibernateDriver</driver>
    </configuration>
</plugin>
于 2019-02-21T15:13:53.957 回答