liquibase: diff не дает ожидаемого результата - PullRequest
1 голос
/ 01 апреля 2019

У меня есть JPA entity, называемый клиентом, и он выглядит следующим образом

@Entity
public class Customer {



private int custNo;
private String custName;
private String country;

public Customer() {
}

public Customer(int custNumber, String custName, String country) {
    this.custNo = custNumber;
    this.custName = custName;
    this.country = country;
}

public int getCustNo() {
   return custNo;
}

public void setCustNo(int custNo) {
   this.custNo = custNo;
}

public String getCustName() {
   return custName;
}

public void setCustName(String custName) {
   this.custName = custName;
}

public String getCountry() {
   return country;
}

public void setCountry(String country) {
   this.country = country;
}
}

, и в моей базе данных есть 2 таблицы: - BE132_name и BE1jj231_address,

Я управляю своим профилем liquibase:diffи дает мне набор изменений следующим образом

    <changeSet author="jobs (generated)" id="1554122585461-10">
    <dropTable tableName="BE132_name"/>
    </changeSet>
    <changeSet author="jobs (generated)" id="1554122585461-11">
    <dropTable tableName="BE1jj231_address"/>
    </changeSet>

Как вы можете видеть, он создал таблицу удаления, поскольку у меня нет соответствующих JPA сущностей.Но почему он не создает create script для моего Клиента?

Для пустой базы данных (без таблиц) я получаю

 INFO 4/2/19 5:47 PM: liquibase: No changes found, nothing to do

1 Ответ

0 голосов
/ 23 июля 2019

Я использовал liquibase-hibernate plugin для этого !. Он способен генерировать changeset для сущности JPA, даже если соответствующая таблица отсутствует в БД.

Плагин

<plugins>
    <plugin>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-maven-plugin</artifactId>
        <version>3.4.1</version>
        <configuration>                  
            <propertyFile>src/main/resources/liquibase.properties</propertyFile>
        </configuration> 
        <dependencies>
            <dependency>
                <groupId>org.liquibase.ext</groupId>
                <artifactId>liquibase-hibernate4</artifactId>
                <version>3.5</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.1.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-jpa</artifactId>
                <version>1.7.3.RELEASE</version>
            </dependency>
        </dependencies>               
    </plugin> 
</plugins>

и liquibase.properties

changeLogFile=classpath:liquibase-changeLog.xml
url=jdbc:mysql://localhost:3306/oauth_reddit
username=tutorialuser
password=tutorialmy5ql
driver=com.mysql.jdbc.Driver
referenceUrl=hibernate:spring:org.baeldung.persistence.model
  ?dialect=org.hibernate.dialect.MySQLDialect
diffChangeLogFile=src/main/resources/liquibase-diff-changeLog.xml

referenceUrl использует сканирование пакетов, поэтому требуется параметр диалекта. changeLogFile - это местоположение набора изменений, для которого БД синхронизируется. diffChangeLogFile - это место, где должен быть сброшен журнал изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...