用户实体

上次修改时间:2021-07-03 19:23:86

用户实体

该实体是JHipster内部创建和管理的特殊实体。

它包含一些基本信息:

  • 名和姓,
  • 登录名,
  • 一个电子邮件地址,
  • 密码(不是明文),
  • 权限

从头开始创建应用程序将为您生成一些默认用户,例如admin用户或guest用户。

可能的关系

以下是与此实体之间的可能关系:

  • User实体many-to-one 关系 (CarUser可以具有多对一关系)。 这将在您的新实体repository中生成一个特定的查询,因此您可以根据当前的安全用户过滤您的实体,这是常见的要求。 在生成的Angular/React客户端UI上,您将在Car下拉菜单中选择User
  • User实体的many-to-manyone-to-one关系,但是另一个实体 必须 是该关系的所有者(Team可以与User具有多对多关系。 但只有Team可以添加/删除User,而User不能添加/删除Team)。 在前端UI上,您还可以在多选框中选择一个User

修改用户实体

如果遇到需要更改User实体的问题,建议不要这样做。 修改此默认实体可能会改变您的应用程序,具体取决于更改的性质。

相反,还有其他可用的解决方案,例如:

  • 创建一个由User实体组成的实体,
  • 扩展User实体

使用复合

如果您需要向实体添加新字段或为其添加关系, 您需要做的就是创建另一个实体,例如:

entity ApplicationUser {
  additionalField Integer min(42) max(42)
}

relationship OneToOne {
  ApplicationUser{internalUser} to User
}

这是此代码段的作用:

  • 用一个字段创建一个名为ApplicationUser的新实体,
  • 创建一个从该实体到标准User实体的关系:

    • 我们使用OneToOne关系将JHipster创建的实体链接到这个新实体,
    • 我们使用单向关系,不修改内部管理的User实体。

这是推荐的解决方案,因为它可以使用JDL来实现。 该解决方案非常适合在不实际修改的情况下将新字段和关系(除其他事项外)添加到User实体。

使用继承

该解决方案与上一个解决方案具有相同的功能,但是不如第一个解决方案简单明了,因为您需要:

  • 手动创建一个新实体,
  • 修改代码以使其使用这个新实体,
  • 潜在地管理您自己的数据库迁移,以保留该新实体(取决于更改的性质)。

但是,它具有与上一个相同的优点:您无需手动更改User实体。

创建自己的默认用户实体

实际上不建议使用此选项,但是可以通过使用用户管理跳过选项(JDL中的skipUserManagement应用程序选项)来实现。

JHipster在某些情况下(对于某些选项)在内部使用此选项,并且使用它将:

  • 不会生成任何用户管理代码(前端和后端),
  • 允许您更新User实体(向其中添加/删除任何字段),

此外,您还必须创建实体并亲自处理用户管理。

最好将其保留为false,因为前两个解决方案非常容易实现