jHipster 创建实体的顺序是什么

jHipster what order to create entities

我正在尝试启动一个应用程序,我的想法是先使用命令行来处理实体,然后在 UI 上工作。事实证明,这比我最初想象的要棘手,因为在某些情况下,您会收到一条警告,提示生成器无法工作。就像它是 OneToMany 还是 ManyToOne 或者这个实体是否是关系的拥有方。

最好的解决方法是什么?

如果我能制定出规则,那么我也许可以决定以什么顺序创建东西。我担心的是,对于一个复杂的模式,没有任何顺序可以在没有一些警告和东西不起作用的情况下工作。

我的另一个想法是先生成没有关系的实体,然后编辑 json 文件以添加关系。然后也许我可以在每个实体上再次 运行 生成器。不确定这是否可行,而且我不能 100% 确定所需的正确 json 属性。

其他人尝试了什么?

规划您的实体和关系,以便在您创建实体时,它所依赖的所有实体都已创建。一种方法是使用模式设计器或仅记录实体并将它们按需要创建的顺序排列。

否则,如您所知,您将不得不手动连接这些关系,或使用实体生成器重新创建它们。

但是,即使有计划,您也将不得不在现实世界中混合使用这些方法。这仅取决于您对生成的代码进行了多少修改,哪种方法最快。

Rori 的回答基本上就是我所做的,但我想提供一些额外的细节。

首先,我检查了生成器并创建了各种类型的关系,以查看哪些有效,哪些发出警告。我发现它有时有效,有时无效,但没有任何地方记录为什么。

这些关系总是有效的。
一对多
OneToOne(不是所有者)
ManyToMany(不是所有者)

只有当另一个实体已经存在时,这些关系才有效。
多对一
OneToOne(所有者)
ManyToMany(所有者)

它们不起作用的原因总是相同的。所有这些都需要在另一个 table 上创建一个外键,如果它不存在,jHipster 就无法做到。您当然可以忽略该警告,但我不确定这是否意味着其他任何方法都不起作用。

根据这些规则,我列出了我的实体,并将它们放入一个可以在没有警告的情况下工作的顺序。如果一个实体有可能发出警告的关系,那么我只是确保先创建另一个实体。

这似乎奏效了。我发现的唯一一件事是因为生成器是一次性的(你不能用它来修改实体),你必须预先知道你的模式并一次性生成很多。