jHipster 创建实体的顺序是啥
Posted
技术标签:
【中文标题】jHipster 创建实体的顺序是啥【英文标题】:jHipster what order to create entitiesjHipster 创建实体的顺序是什么 【发布时间】:2015-04-21 00:20:48 【问题描述】:我正在尝试启动一个应用程序,我的想法是首先使用命令行来敲定实体,然后在 UI 上工作。事实证明这比我最初想象的要棘手,因为在某些情况下,您会收到警告说生成器将无法工作。例如它是 OneToMany 还是 ManyToOne,或者这个实体是否是关系的拥有方。
解决这个问题的最佳方法是什么?
如果我能制定出规则,那么我也许可以决定创建事物的顺序。我担心的是,对于复杂的架构,没有任何顺序可以在没有一些警告和事情不工作的情况下工作。
我的另一个想法是先生成没有关系的实体,然后编辑 json 文件以添加关系。然后也许我可以在每个实体上再次运行生成器。不确定这是否可行,我也不能 100% 确定所需的正确 json 属性。
其他人尝试过什么?
【问题讨论】:
【参考方案1】:规划您的实体和关系,以便在您创建实体时,它所依赖的所有实体都已创建。一种方法是使用模式设计器或仅记录实体并将它们按需要创建的顺序放置。
否则,如您所知,您将不得不手动连接这些关系,或者使用实体生成器重新创建它们。
但是,即使有计划,您也必须在现实世界中混合使用这些方法。这仅取决于您对生成的代码进行了多少修改,哪种方法最快。
【讨论】:
【参考方案2】:Rori 的回答基本上是我所做的,但我想提供一些额外的细节。
首先,我查看了生成器并创建了每种类型的关系,以查看哪些有效,哪些发出警告。我发现它有时有效,有时无效,但没有记录任何原因。
这些关系始终有效。 一对多 OneToOne(非所有者) 多对多(非所有者)
这些关系仅在其他实体已经存在时才有效。 多对一 OneToOne(所有者) 多对多(所有者)
它们不起作用的原因总是相同的。所有这些都需要在另一个表上创建一个外键,如果它还不存在,jHipster 就无法做到这一点。您当然可以忽略警告,但我不确定这是否意味着其他任何方法都不起作用。
根据这些规则,我列出了我的实体,并将它们排列成可以在没有警告的情况下工作的顺序。如果一个实体的关系可能会发出警告,那么我只需确保先创建另一个实体。
这似乎奏效了。我发现的唯一一件事是,由于生成器是一次性的(您不能使用它来修改实体),因此您必须预先了解您的架构并一次性生成很多内容。
【讨论】:
以上是关于jHipster 创建实体的顺序是啥的主要内容,如果未能解决你的问题,请参考以下文章
jHipster - 即使从实体中删除权限,AngularJS 路由也会重定向到登录