扩展JHipster用户

时间:2015-08-02 18:32:31

标签: jhipster

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

我虽然有几个选择:
1.使用Hibernate继承策略之一(https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html)扩展User实体,但看起来需要对代码进行大量更改。我还必须确保表格生成也正确并且使用liquibase工作正常;
2.将所有必需的属性添加到用户实体,然后将供应商和使用者添加为角色。由于User表不会被标准化,我只是觉得不舒服;
3.从每个实体创建一个关系到User实体,但在这种情况下,我不清楚如何继承用户管理的好处。

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

提前致谢。

3 个答案:

答案 0 :(得分:4)

我宁愿使用合成而不是继承。基本上,您可以让供应商与用户保持一对一的关系。这样,您就可以让JHipster User相关代码保持不变。

User management feature尚未发布,所以让我们关注用户注册,那么用户将如何成为供应商或客户?他们应该自己选择吗?用户既可以是消费者又可以是供应商吗?

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

使用合成会创建一个JOIN,它会对大量使用的实体产生性能影响。实体继承有效,但对于JPA来说很难,甚至对于生成的代码也更困难。

如果必须在合成和继承之间进行选择,则在此情况下,我希望在应用程序增长时使用带有缓存的合成。