为什么liquibase不从JPA实体生成更改日志?

我想在oracle中的当前数据库和实体之间生成差异。但是差异未正确生成,我认为清算看不到我的实体。

我已经使用以下设置创建了liquibase属性文件:

username=username
password=password
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@server
referenceUrl=hibernate:spring:path.to.package.with.entities?dialect=org.hibernate.dialect.Oracle12cDialect
<liquibase.plugin.version>3.5.5</liquibase.plugin.version>
<liquibase.hibernate.version>3.6</liquibase.hibernate.version>
...
<dependencies>
<dependency>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-core</artifactId>
  <version>3.8.0</version>
</dependency>

...

<build>
<plugins>
    <plugin>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-maven-plugin</artifactId>
        <version>${liquibase.plugin.version}</version>
        <dependencies>
            <dependency>
                <groupId>org.liquibase.ext</groupId>
                <artifactId>liquibase-hibernate5</artifactId>
                <version>${liquibase.hibernate.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <version>2.1.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
                <version>2.0.1.Final</version>
            </dependency>
        </dependencies>
        <configuration>
            <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
            <propertyFile>/src/main/resources/liquibase-plugin.properties</propertyFile> 
  <changeLogFile>src/main/resources/liquibase/master.xml</changeLogFile>
            <diffChangeLogFile>src/main/resources/liquibase/updates/1-changeLog.oracle.sql</diffChangeLogFile>
            <logging>debug</logging>
        </configuration>
    </plugin>
</plugins>
</build>

application-dev.yml

spring:
  datasource:
    driver-class-name: oracle.jdbc.driver.OracleDriver
    url: jdbc:oracle:thin:@server
    username: username
    password: password
  jpa:
    properties:
      hibernate:
        default_schema: schema
    show-sql: true
  liquibase:
    enabled: true
  jpa:
    hibernate:
      naming:
        physical-strategy: package.to.class.snakeCasePhysicalNamingStrategy

并执行此命令

mvn liquibase:diff -Dspring.profiles.active=dev

但1-changeLog.oracle.sql中的结果为

DROP TABLE COUNTRY;
DROP TABLE LANGUAGE;
DROP TABLE PROFILE;
DROP TABLE REGION;
DROP TABLE TIMEZONE;
DROP TABLE USERS;
DROP TABLE USER_ADDRESS;
DROP TABLE USER_STATUS;
DROP TABLE USER_SUBSERVICE;
DROP SEQUENCE SEQ_USERS;

因此,我认为休眠状态看不到我的实体。当我将referenceUrl设置为没有实体的包时,结果是相同的。

我尝试过

referenceUrl=hibernate:spring:path.to.package.with.entities?dialect=org.hibernate.dialect.Oracle12cDialect&hibernate.physical_naming_strategy=package.to.class.snakeCasePhysicalNamingStrategy

也一样,但回报我

Error setting up or running Liquibase: liquibase.exception.UnexpectedLiquibaseException: liquibase.exception.DatabaseException: java.lang.ClassnotFoundExcept
ion: package.to.class.snakeCasePhysicalNamingStrategy

并且该类与实体位于同一包中。

冬眠/ liquibase为什么看不到我的实体,这可能是个问题?谢谢。

wangjihong0407 回答:为什么liquibase不从JPA实体生成更改日志?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3144739.html

大家都在问