Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Liquibase diff生成错误的主键_Java_Maven_Spring Boot_Liquibase - Fatal编程技术网

Java Liquibase diff生成错误的主键

Java Liquibase diff生成错误的主键,java,maven,spring-boot,liquibase,Java,Maven,Spring Boot,Liquibase,当我使用liquibase在具有@Inheritation(strategy=InheritanceType.TABLE\PER\u CLASS)的实体上生成变更集时,我遇到了一个问题 pom.xml <plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId>

当我使用liquibase在具有@Inheritation(strategy=InheritanceType.TABLE\PER\u CLASS)的实体上生成变更集时,我遇到了一个问题

pom.xml

<plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.6.2</version>
            <configuration>
                <!--<propertyFile>src/main/resources/liquibase.properties</propertyFile>-->
                <username>synchroad_adm</username>
                <password>changeme</password>
                <url>jdbc:postgresql://localhost:5432/synchroad?currentSchema=synchroad_adm</url>
                <referenceDefaultSchemaName>synchroad_adm</referenceDefaultSchemaName>
                <defaultSchemaName>synchroad_adm</defaultSchemaName>
                <referenceUrl>hibernate:spring:com.demo?dialect=org.hibernate.dialect.PostgreSQLDialect</referenceUrl>
                <driver>org.postgresql.Driver</driver>
                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                <changeLogFile>${project.basedir}/src/main/resources/db/liquibase/app/db.changelog.xml</changeLogFile>
                <diffChangeLogFile>target/changelog-diff.xml</diffChangeLogFile>
            </configuration>
            <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.4.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                    <version>${spring.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                    <version>${spring.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                    <version>${spring.version}</version>
                </dependency>
                <dependency>
                    <groupId>javax.validation</groupId>
                    <artifactId>validation-api</artifactId>
                    <version>2.0.1.Final</version>
                </dependency>
                <dependency>
                    <groupId>org.javassist</groupId>
                    <artifactId>javassist</artifactId>
                    <version>3.23.1-GA</version>
                </dependency>
            </dependencies>
        </plugin>
我正在使用Liquibase生成我的变更集

mvn clean install liquibase:diff 
但Liquibase生成2个具有相同primaryKeyName的createTable

diff.xml

<changeSet author="mvallet (generated)" id="1535684993363-2">
  <createTable tableName="table_one">
    <column name="id" type="BIGINT">
      <constraints primaryKey="true" primaryKeyName="MyTablePK"/>
    </column>
  </createTable>
</changeSet>
<changeSet author="mvallet (generated)" id="1535684993363-2">
  <createTable tableName="table_two">
    <column name="id" type="BIGINT">
      <constraints primaryKey="true" primaryKeyName="MyTablePK"/>
    </column>
  </createTable>
</changeSet>
我有一个错误:错误:关系“MyTablePK”已经存在

如果我不使用liquibase,而是让hibernate生成表,那么我就没有问题了


有人有主意吗?thx

尝试从MyTable类中删除@Entity 如果您使用的是hibernate,那么生成的PKN是什么?
为什么需要持久化MyTable?

MyTable没有持久化,如果remove@Entity I不使用MyTableRepository扩展了JpaRepository,则只保留TableOne和TableTwo
<changeSet author="mvallet (generated)" id="1535684993363-2">
  <createTable tableName="table_one">
    <column name="id" type="BIGINT">
      <constraints primaryKey="true" primaryKeyName="MyTablePK"/>
    </column>
  </createTable>
</changeSet>
<changeSet author="mvallet (generated)" id="1535684993363-2">
  <createTable tableName="table_two">
    <column name="id" type="BIGINT">
      <constraints primaryKey="true" primaryKeyName="MyTablePK"/>
    </column>
  </createTable>
</changeSet>
mvn clean install liquibase:update