2017-08-26 87 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

感谢。