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

时间:2015-01-29 13:45:36

标签: java hibernate jpa jhipster

我使用jhipster生成器来创建一个项目。我已按照jhipster documentation中提供的信息手动生成了一些实体:

  

如果您更喜欢(或需要)手动进行数据库更新,这里是开发工作流程:修改JPA实体(添加字段,a   关系等)在你的。中创建一个新的“更改日志”   src / main / resources / config / liquibase / changelog目录。中的文件   该目录以其创建日期为前缀(在yyyyMMddHHmmss中   格式),然后有一个标题描述他们做什么。例如,   20141006152300_added_price_to_product.xml是个好名字。加上这个   您的“更改日志”文件   src / main / resources / config / liquibase / master.xml文件,因此应用它   下次运行应用程序时如果需要更多信息   使用Liquibase,请转到http://www.liquibase.org

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

由于

7 个答案:

答案 0 :(得分:50)

1)编辑代表你的实体的json文件(添加/删除字段,语法非常简单,如果需要对'fieldsContainOneToMany'等常规实体属性进行任何更改,请检查文件末尾),你会在:

找到它
<jhipster_root_folder>/.jhipster/entityName.json

2)构建代码。

3)在项目的根目录中运行命令:

yo jhipster:entity entityName

注意:默认情况下,此命令会覆盖所有手动更改。我建议在运行此命令之前在VCS存储库上进行提交,以最终还原任何不需要的更改。

4)运行

mvn liquibase:diff

答案 1 :(得分:24)

我有解决方案为jhipster 3.4.2工作,这是我1天的结果,希望对你有帮助:))

  1. 运行yo jhipster:entity entityName
  2. 修改实体(添加,删除,...),最后,jhipster将提出覆盖文件的问题, *重要说明:为changelog .xml文件和navbar.html文件选择否
  3. 返回项目并运行mvn compile liquibase:diff
  4. 运行您的应用程序
  5. DONE

答案 2 :(得分:6)

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

  

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

     

Liquibase Hibernate是一个在你的pom.xml中配置的Maven插件,与你的Spring application.yml文件无关,所以如果你更改了默认设置(例如,更改了数据库密码),你需要修改这两个文件。

     

以下是开发工作流程:

     

修改您的JPA实体(添加字段,关系等)   编译你的应用程序(这适用于编译的Java代码,所以不要忘记编译!)   运行mvn liquibase:diff(或mvn编译liquibase:diff之前编译)   一个新的&#34;更改日志&#34;在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中。

答案 3 :(得分:6)

您也可以modify existing entities互动,例如将yo jhipster:entity Foo用于实体Foo

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

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

答案 4 :(得分:1)

对于jhipster 5.7.0,您可以再次运行实体命令,它会询问您是否要对其进行修改。

 % 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

答案 5 :(得分:0)

我为修改jhipster实体所做的工作就像关系一样添加新表:

  1. (在任何事情发生之前保存项目:p)yo jhipster:实体TableToEdit和编辑你想要的任何内容。Who to editTableOrAdd
  2. 然后添加新表。(可选)
  3. 然后我只需要更改或删除DataBase的所有表,自动生成SQL部分的新字段和关系。
  4. 注意:如果在此步骤之后,它有任何错误,serverError或我重新生成de entity regenerate Entity的内容。当然,如果你想保留所有数据,这不是一个好的选择。

答案 6 :(得分:0)

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

第一(使用jdl-studio):

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

1)使用settings.py命令将.jh文件导出到项目的根文件夹。您也可以使用jhipster export-jdl myApp-jdl.jh

将.jh文件导出到特定路径。

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

3)然后将这个myApp-jdl.jh文件保存到项目的根文件夹并运行jhipster export-jdl myPath/myApp-jdl.jh,也可以将其存储在系统中的任何位置,并提供从中导入的路径!像jhipster import-jdl myApp-jdl.jh

第二(使用JHipster CLI):

根据官方文档jhipster.tech/creating-an-entity/的建议,您可以按照以下步骤更新实体:

1)键入我们用于使用CLI创建实体的相同命令jhipster import-jdl myPath/myApp-jdl.jh。这里jhipster entity <my_entity_name>是我们要修改的实体名称。

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

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

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

解决方案:

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

2)当要求您覆盖对文件的更改时,可以根据需要跳过覆盖选项。只是建议不要更改导航栏html文件。

3)之后,您可以将其打开到Intellij或Eclipse。然后,您可以通过本地历史记录来修改其他更改的文件。在Intellij中,本地历史记录将位于 VCS 菜单中。