Roo 2.0如何在没有persistence.xml的情况下将Hibernate从Create更改为Update

时间:2017-08-26 07:23:03

标签: hibernate spring-roo

我准备将我的应用程序部署到生产环境,然后找到persistence.xml从create更改为update,以便数据保持不变......等待,没有persistence.xml

如何进行更改?

2 个答案:

答案 0 :(得分:3)

Spring Roo 2.0生成Spring Boot应用程序,因此您需要使用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文件中应该有一个非常类似的持久性配置。但是,您说您的数据没有持久存在,因此您可能会遇到以下问题:

  1. 您将项目配置为使用内存数据库(如HYPERSONIC_IN_MEMORY),因此在重新启动应用程序时,数据将被删除。 解决方案:更改为Postgresql,Mysql,Oracle等非易失性数据库,并使用正确的配置再次执行jpa命令。
  2. 您已执行示例script clinic.roo,之后您已更新代码以生成您自己的应用程序。示例clinic.roo文件配置HYPERSONIC_IN_MEMORY数据库,因此您将遇到与第1点所述相同的问题。 SOLUTION :再次执行jpa命令使用非易失性数据库配置持久性。
  3. 您已使用spring.jpa.hibernate.ddl-autoapplication.properties值在create文件中手动设置了属性create-drop解决方案:将此属性的值更改为validateupdate值。
  4. 无论如何,我建议你如果你将使用Spring Boot应用程序,请使用Spring Boot官方文档阅读有关它们的更多信息:

    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

    希望它有所帮助,

答案 1 :(得分:0)

好的,所以我问了时间并获得了学习如何制作手表的规格,

答案很简单......

spring.jpa.hibernate.ddl-自动=更新

将其添加到application.properties。

JCG确实提供了一个提示....虽然他说我更改了设置,但它没有改变,默认是“创建”不更新。

最有用的是他与

的链接

application.properties documentation

感谢。