liquibase:diff not giving me expected result

天大地大妈咪最大 提交于 2019-12-04 02:25:42

问题


I have a JPA entity called customer and goes like this

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

and my db has 2 tables :- BE132_name and BE1jj231_address ,

I am running my profile liquibase:diff and is giving me the change set as follows

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

As you can see it created drop table since I dont have its corresponding JPA entities. But why is it not creating the create script for my Customer ?

For an empty data base (one without any tables) , I am getting

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

回答1:


I used the liquibase-hibernate plugin for this!. It is capable of generating the changeset for a JPA entity even if its corresponding table is not there in the db.

The plugin

<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>

and the 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

The referenceUrl is using package scan, so the dialect parameter is required. changeLogFile is the location of changeset for which the db is in sync. diffChangeLogFile is the location where the difference changelog has to be flushed.



来源:https://stackoverflow.com/questions/55455584/liquibasediff-not-giving-me-expected-result

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!