繁体   English   中英

在 Spring 引导中使用 Maven、Liquibase 和 Hibernate 引导生成数据库和实体之间的差异文件会产生错误

[英]Using Maven, Liquibase and Hibernate in Spring Boot to generate Diff-Files between a Database and Entities yields Error

我正在尝试在 Spring 引导应用程序中使用 Liquibase 和 Hibernate 生成 Diff 文件,该应用程序包含我正在使用的数据库与我的 JPA 实体之间的更改。 我正在关注本教程: https://www.baeldung.com/liquibase-refactor-schema-of-java-app (特别是第 7 步)。

但是,在执行 mvnliquidate:diff 命令时,我只收到以下错误:

liquibase.exception.DatabaseException: java.lang.RuntimeException: Driver class was not specified and could not be determined from the url (hibernate:spring:com.example.demo?dialect=org.hibernate.dialect.PostgreSQLDialect& hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy& hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy)

我已经在互联网上搜索过,有人遇到过类似的问题,但是他们的解决方案在我的情况下不起作用。

这是我的liquidate.properties 文件:

url = jdbc:postgresql://localhost:5432/employeediff
username = myuser
password =
driver=org.postgresql.Driver
classpath=/usr/local/opt/liquibase/internal/lib/postgresql.jar

changeLogFile = src/main/resources/db/changelog/changelog-master.xml
diffChangeLogFile = src/main/resources/db/changelog/diffchangelog.xml

referenceUrl= hibernate:spring:com.example.demo?dialect=org.hibernate.dialect.PostgreSQLDialect

这是我的 pom.xml 文件:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.liquibase/liquibase-maven-plugin -->
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>4.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
<!--            <scope>runtime</scope>-->
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>4.1.0</version>
                <configuration>
                    <propertyFile>src/main/resources/liquibase.properties</propertyFile>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.liquibase.ext</groupId>
                        <artifactId>liquibase-hibernate5</artifactId>
                        <version>3.6</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-beans</artifactId>
                        <version>5.3.22</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework.data</groupId>
                        <artifactId>spring-data-jpa</artifactId>
                        <version>2.7.2</version>
                    </dependency>
                    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
                    <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-jdbc</artifactId>
                        <version>2.7.3</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

非常感谢任何帮助! 非常感谢!

亲切的问候

我在另一个网站上找到了这个解决方案,但它有可怕的弹出窗口,所以除非你真的想要它,否则我会把链接留给你:

The problem was with my referenceUrl in liquibase.properties The referenceUrl is liquibase-hibernate using package scan, so the url has to liquibase-hibernate start with hibernate:spring:

我变了

referenceUrl=com.sample.App?=org.hibernate.dialect.PostgreSQLDialect

进入

referenceUrl=hibernate:spring:com.sample.App?dialect=org.hibernate.dialect.PostgreSQLDialect

这解决了我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM