2013-12-20 71 views
2

當前正在使用spring-boot使用Spring MVC和JPA數據創建一個Web應用程序但是我們遇到了屬性問題spring.jpa.hibernate.ddl-auto:創建因爲它似乎在第一次運行時,我的表格A,B,C被正確創建。然後,我填充所有3個表,當我關閉應用程序並重新運行它時,表A仍然包含填充的數據。春季啓動和ddl-auto問題

表B和C被完全擦掉,這有點奇怪。

任何人都知道這是爲什麼?

我有我的pom.xml中下作爲依賴

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>0.5.0.M6</version> 
</parent> 


<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.26</version> 
     </dependency> 
    </dependencies> 

</dependencyManagement> 

<dependencies> 
    <!-- Web Dependencies --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.thymeleaf</groupId> 
     <artifactId>thymeleaf-spring3</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>nz.net.ultraq.thymeleaf</groupId> 
     <artifactId>thymeleaf-layout-dialect</artifactId> 
    </dependency> 


    <!-- Persistence --> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 

    <!-- Test --> 
    <!-- <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot</artifactId> 
     <classifier>tests</classifier> 
    </dependency> --> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 

    </dependency> 

    <!-- Database --> 
<!--<dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> 
     <scope>runtime</scope> </dependency> --> 

     <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.26</version> 
    </dependency> 

    <!-- Validation Dependencies --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
    </dependency> 


</dependencies> 

spring.jpa.hibernate.ddl-汽車

+1

它適合我。也許這些表沒有被Hibernate刪除(或創建)?如果您可以共享顯示此問題的示例項目,那麼診斷將更容易。 –

+0

沒有表是由休眠創建..只是由於某種原因,如果你離開的值spring.jpa.hibernate.ddl-auto:創建一些表是完全從頭開始重新創建後續運行,我不知道是否它必須與使用MySQL或其他東西。 – Javed

+0

這也發生在我身上。 – Jay

回答

0

也許你有一個外鍵contraint?我有使用MySQL表的這個問題,表不能被TRUNCATEd或DROPed如果表是不同的外鍵(即使這不會打破任何「真實」的記錄...)

+0

在我的情況下,A在B中有一個外鍵(「A」是一對多「B」),而C與任何其他實體沒有關係。會發生什麼是B和C被清除,而A保持不變spring.jpa.hibernate.ddl-auto:創建。我不會期望任何被清除的東西,但只有當發現一個新的實體時纔會產生,在這裏它似乎沒有以這種方式作出反應 – Javed

1

當ddl-auto = create時,它會清除表格並重新創建它們,所以drop-create是預期的行爲,我希望你會丟失數據。唯一令人驚訝的是,它僅剩下表A.在我的情況下,使用ddl-auto = create的集成測試在運行後不訪問仍有數據的表。所以我認爲它不會重新創建沒有被訪問的表。