2017-08-26 33 views

回答

3

Spring Roo的2.0生成春天啓動的應用程序,所以你需要使用application.properties文件來配置持久性。在Spring Boot應用程序中,不需要persistence.xml文件。

默認情況下,由Spring Roo shell中生成的屬性配置了持久堅持的數據,而不是每一個應用程序部署時間創建它。

這是有關使用Spring Roo的命令配置的持久性的例子:

jpa setup --provider HIBERNATE --database POSTGRES --databaseName myDB --userName admin --password admin --hostName localhost

的src /主/資源/ application.properties中

spring.datasource.driver-class-name=org.postgresql.Driver 
spring.datasource.password=admin 
spring.datasource.url=jdbc\:postgresql\://localhost\:5432/myDB 
spring.datasource.username=admin 
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy 

如果你已經配置了使用上面提供的類似命令在項目中保持持久性,您應該在application.properties文件中擁有非常類似的持久性配置。但是,你說你的數據beeing不持久,所以你也許可以有以下的問題:

  1. 您配置項目中使用的內存數據庫像HYPERSONIC_IN_MEMORY,所以當你重新啓動應用程序,數據已移除。 SOLUTION:切換到再次執行jpa命令具有正確結構的非易失性數據庫如PostgreSQL中,MySQL,Oracle等。
  2. 你必須執行樣本script clinic.roo之後,你已經更新的代碼來生成自己的應用程序。示例clinic.roo文件配置HYPERSONIC_IN_MEMORY數據庫,因此您將遇到與第1點中所述相同的問題。解決方案:再次執行jpa命令以使用非易失性數據庫配置持久性。
  3. 您已在application.properties文件中用createcreate-drop值手動解決了屬性spring.jpa.hibernate.ddl-auto的值。 解決方案:將此屬性的值更改爲validateupdate值。

無論如何,我推薦你,如果你將與春季啓動應用程序的工作,使用Spring啓動官方文檔閱讀更多有關他們:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

此外,好檢查所有可用你可以在你的application.properties文件中配置屬性:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties

希望它他LPS,

+0

我明白你在說什麼,但是它並沒有像我看到的那樣相當活躍......例如,你說:「默認情況下,Spring Roo shell生成的屬性配置持久化來保存數據,不要在每次部署應用程序時創建它。「但這不是我所看到的創建,因爲當你有「創建」而不是「在persistence.xml更新。我的log.roo顯示...」jpa設置 - 提供HIBERNATE - 數據庫HYPERSONIC_PERSISTENT「我的應用程序。屬性有,沒有hibernate.hbm2ddl.auto –

+0

非常感謝。這個非常有用 –

0

好了,所以我問的時候,得到了規範學習如何建立一個手錶,

答案很簡單...

spring.jpa.hibernate.ddl-AUTO =更新

將此項添加到application.properties中。

JCG確實提供了一個提示....雖然他說我改變了設置,但它並沒有改變,默認是「創建」不更新。

最有用的是他的鏈接

application.properties documentation

感謝。