0

我在休眠中映射了一些类,这些类基本上是一种策略模式。我有一个类“User”,它知道一个抽象类“UserType”,它声明了一个抽象方法“purchaseSomething()”,子类覆盖了这个方法。现在,我将所有类映射为实体,因此我有三个表。每次用户提交到系统时,当我持久化用户时,这会将他的 UserType 子类实例保存在表中。我希望它有一个名为“UserTypes”的表,只有两个列“id”和“type”,因此每个“Admin”用户将指向表中的同一行,每个“Customer”用户将指向表中的同一行,而不是我已经有了“管理员”

谢谢,任何提示都会很有用。

4

1 回答 1

0

对于纯策略模式,请考虑将您的类型设为 Enum 并使用 JPAEnumeration注释。您仍然可以提供 Enum 抽象方法来填写您的策略。

但是,听起来您实际上可能希望分别存储有关管理员和客户的数据。如果用户是客户或管理员但不是两者,创建子类并使用joined-subclass。如果用户可以两者兼有,那么您可能只需要一对一的关系映射。

于 2012-11-17T20:23:20.367 回答