用户实体
该实体是JHipster内部创建和管理的特殊实体。
它包含一些基本信息:
- 名和姓,
- 登录名,
- 一个电子邮件地址,
- 密码(不是明文),
- 权限
- 等
从头开始创建应用程序将为您生成一些默认用户,例如admin用户或guest用户。
可能的关系
以下是与此实体之间的可能关系:
- 与
User
实体many-to-one
关系 (Car
与User
可以具有多对一关系)。 这将在您的新实体repository中生成一个特定的查询,因此您可以根据当前的安全用户过滤您的实体,这是常见的要求。 在生成的Angular/React客户端UI上,您将在Car
下拉菜单中选择User
。 - 与
User
实体的many-to-many
和one-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
,因为前两个解决方案非常容易实现。