扩展 JHipster 用户

Extending JHipster User

在我的系统中,我有一些概念上继承自 User 的实体。例如,我可以有供应商和普通消费者。我希望扩展 User 实体,以便我可以继承所有用户权益,如注册、登录、丢失密码等。

我考虑了几个选项:
1. 使用一种 Hibernate 继承策略 (https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html) 扩展 User 实体,但看起来需要对代码进行大量更改。我还必须确保 tables 代也正确并且可以与 liquibase 一起正常工作;
2. 将所有必要的属性添加到用户实体,然后将供应商和消费者添加为角色。这样做让我感觉不舒服 table,因为用户 table 不会被规范化;
3. 创建从这些实体中的每一个到用户实体的关系,但在这种情况下,我不清楚如何继承用户管理的好处。

有没有人做过类似的事情以便对此有所了解?

提前致谢。

我宁愿使用组合而不是继承。所以基本上,您会让 Supplier 与 User 保持一对一的关系。这样,你让 JHipster 用户相关代码不变。

User management feature 还没有发布所以让我们专注于用户注册那么用户如何才能成为供应商或客户?他们应该自己选择吗?用户可以同时是消费者和供应商吗?

对我来说,简单的 JHipster CRUD 屏幕是不够的,您必须准备好构建自己的屏幕以获得更好的用户体验。所以,我宁愿专注于拥有强大的数据模型和 REST API.

我找到了第二种方法。
我将每个子 class(在我的示例中为供应商和客户)的所有属性添加到 table 用户(JHI_USER)和类型属性,以便我可以知道哪种类型我正在处理的用户。我还将它们各自的属性添加到 User class 并更新了相关的 classes,如 UserService、UserRepository、test classes 等等。我也使用了角色的概念,但只是为网站的每个部分提供权限。
之后,我为每个用户类型创建了一个 AngularJS 状态,传递了它的类型(有点像鉴别器)。例如,我创建了一个名为 /registerSupply 的状态,传递它的类型 = 'S'。然后我编辑了原始注册页面以添加所有额外的供应商和客户属性,根据用户类型过滤掉它们,就是这样。
正如我所说,使用这种方法我并不感到舒服 table,但最终,它基本上是 Hibernate (https://docs.jboss.org/ejb3/app-server/tutorial/singleinheritance/single.html) 建议的策略之一,这让我感觉好一点。

this issue 中解释的首选方法是使用 Git。只需手动添加代码,然后在从 JDL 重新生成代码时使用 git 合并。

使用组合会创建对大量使用的实体有性能影响的 JOIN。实体继承有效,但对 JPA 来说很难,对生成的代码会更难。

如果我必须在组合和继承之间做出选择,我会在应用程序增长时更喜欢组合和缓存。