Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 如何修改使用jhipster生成的现有实体?_Java_Hibernate_Jpa_Jhipster - Fatal编程技术网

Java 如何修改使用jhipster生成的现有实体?

Java 如何修改使用jhipster生成的现有实体?,java,hibernate,jpa,jhipster,Java,Hibernate,Jpa,Jhipster,我使用jhipster生成器创建项目。我根据中提供的信息手动生成了一些实体: 如果您喜欢(或需要)手动执行数据库更新,那么以下是开发工作流:修改您的JPA实体(添加字段、 关系等)在您的数据库中创建新的“更改日志” src/main/resources/config/liquibase/changelog目录。文件在 该目录以其创建日期(以yyyyMMddHHmmss为单位)作为前缀 格式),然后有一个标题描述他们的工作。例如 20141006152300_将_price_添加到_product

我使用jhipster生成器创建项目。我根据中提供的信息手动生成了一些实体:

如果您喜欢(或需要)手动执行数据库更新,那么以下是开发工作流:修改您的JPA实体(添加字段、 关系等)在您的数据库中创建新的“更改日志” src/main/resources/config/liquibase/changelog目录。文件在 该目录以其创建日期(以yyyyMMddHHmmss为单位)作为前缀 格式),然后有一个标题描述他们的工作。例如 20141006152300_将_price_添加到_product.xml是个好名字。加上这个 您的系统中的“更改日志”文件 src/main/resources/config/liquibase/master.xml文件,因此应用了它 下一次运行应用程序时,如果需要有关 使用液化糖,请转到

这里的文档刚刚提到,如何添加!!! 如果我想删除一个字段或实体之间的关系(jpa实体),该怎么办


谢谢

在同一页中,您可以看到这句话:

如果您选择在开发中使用MySQL或Postgresql,则可以使用mvn liquibase:diff目标自动生成变更日志

Liquibase Hibernate是在pom.xml中配置的Maven插件,它独立于Spring application.yml文件,因此如果您更改了默认设置(例如,更改了数据库密码),则需要修改这两个文件

以下是开发工作流程:

修改JPA实体(添加字段、关系等) 编译您的应用程序(这对编译的Java代码有效,所以不要忘记编译!) 运行mvn liquibase:diff(或之前要编译的mvn compile liquibase:diff) 将在src/main/resources/config/liquibase/changelog目录中创建一个新的“更改日志” 查看此更改日志并将其添加到src/main/resources/config/liquibase/master.xml文件中,以便下次运行应用程序时应用它 如果使用Gradle而不是Maven,则可以通过运行./gradlew liquibaseDiffChangelog使用相同的工作流,并根据需要更改liquibase.Gradle中的数据库配置

因此,您只需更改JPA实体(删除、添加等),运行mvn compile liquibase:diff,并将更改放入master.xml中。

1)编辑表示实体的json文件(添加/删除字段,语法非常简单,如果需要对常规实体属性(如“fieldsContainOneToMany”…)进行任何更改,请在文件末尾签入),您可以在以下位置找到它:

<jhipster_root_folder>/.jhipster/entityName.json
注意:默认情况下,此命令将覆盖所有手动更改。我建议在运行此命令之前在VCS存储库上执行提交,以最终还原任何不需要的更改

4) 跑

您也可以交互地使用,例如,对于实体
Foo
,使用
yo jhipster:entity Foo

这样,您可以重新生成所有实体和对话框


如果您使用的是RDBMS和liquibase,则必须编写变更日志文件并将其添加到master.xml中。这里的帮助是使用
mvn liquibase:diff
gradlew liquibaseDiff
,您可以在现有数据库上运行它。不过,我建议手动编写变更日志文件。

我所做的修改jhipster实体(如添加新表的关系)是:

  • (在任何事情发生之前保存项目:p)yo jhipster:entity table编辑您想要的任何内容
  • 然后添加新表。(可选)
  • 然后,我只需更改或删除数据库的所有表,就可以在SQL部分自动生成新字段和关系

  • 注意:如果在这个步骤之后,它有任何错误、serverError或我重新生成的东西。当然,如果您想保留所有数据,这不是一个好的选择。

    我已经为jhipster 3.4.2提供了解决方案,这是我在1天内完成的结果,希望对您有所帮助:)

  • 运行yo jhipster:entity entityName
  • 修改实体(添加、删除,…),最后,jhipster将给出覆盖文件的问题, *重要注意事项:为
    changelog.xml
    文件和
    navbar.html
    文件选择否
  • 返回项目并运行
    mvn编译liquibase:diff
  • 运行应用程序
  • 完成

  • 对于jhipster 5.7.0,您可以再次运行entity命令,它将询问您是否要修改它

     % jhipster entity device                                 
    INFO! Using JHipster version installed locally in current project's node_modules
    INFO! Executing jhipster:entity device
    INFO! Options: from-cli: true
    
    Found the .jhipster/Device.json configuration file, entity can be automatically generated!
    
    
    The entity device is being updated.
    
    ? Do you want to update the entity? This will replace the existing files for this entity, all your custom code will be overwritten 
      Yes, re generate the entity 
    ❯ Yes, add more fields and relationships 
      Yes, remove fields and relationships 
      No, exit
    

    您可以通过两种方式修改实体

    首先(使用jdl studio):

    通过以下步骤更新.jh或.jdl文件:

    1) 使用
    jhipster export jdl myApp jdl.jh
    命令将.jh文件导出到项目的根文件夹。您还可以使用
    jhipster export jdl myPath/myApp jdl.jh将.jh文件导出到特定路径

    2) 在这里,您可以编辑现有实体。还可以添加新实体

    3) 然后将这个myApp-jdl.jh文件保存到项目的根文件夹中,并运行
    jhipster import jdl myApp jdl.jh
    ,或者您可以将其存储在系统的任何位置,只需给出导入路径即可!比如,
    jhipster导入jdl-myPath/myApp-jdl.jh

    秒(使用JHipster CLI):

    根据官方文件的建议,您可以通过以下步骤更新您的实体:

    1) 键入我们用于使用CLI创建实体的同一命令
    jhipster entity
    。此处
    将是我们要修改的实体名称

    2) 它将为您提供不同的选项,如重新生成实体、添加更多字段和关系、删除字段和关系等

    3) 根据我们的要求进行修改

    注意:它将自动删除您在预构建JHipster项目上所做的手动更改

    解决方案:

    1) 在修改或添加新实体之前提交代码

    2) 当它要求您覆盖对文件的更改时,您可以跳过
    mvn liquibase:diff
    
     % jhipster entity device                                 
    INFO! Using JHipster version installed locally in current project's node_modules
    INFO! Executing jhipster:entity device
    INFO! Options: from-cli: true
    
    Found the .jhipster/Device.json configuration file, entity can be automatically generated!
    
    
    The entity device is being updated.
    
    ? Do you want to update the entity? This will replace the existing files for this entity, all your custom code will be overwritten 
      Yes, re generate the entity 
    ❯ Yes, add more fields and relationships 
      Yes, remove fields and relationships 
      No, exit