我在hibernate中映射了一些类,这些类基本上是一种策略模式。我有一个类“User”,它知道一个抽象类“UserType”,它声明了一个抽象方法“purchaseSomething()”,子类重写了这个方法。 现在,我将所有类映射为实体,因此我有三个表。每次用户提交到系统时,当我持久保存用户时,这会将他的UserType子类实例保存在表中。我希望它有一个名为“UserTypes”的表,它只有两个列“id”和“type”,因此每个“Admin”用户将指向表中的同一行,每个“Customer”用户将指向表中的同一行,而不是我已经有“Admin”用户指向“AdminUser”表上id为23435的行,而另一个“Admin”用户指向表“AdminUser”上id为54234的行
谢谢,任何提示都会有用。
答案 0 :(得分:0)
对于纯策略模式,请考虑将您的类型设为Enum和using the JPA Enumeration
annotation。您仍然可以give the Enum abstract methods填写您的策略。
但是,听起来您实际上可能希望单独存储有关管理员和客户的数据。如果用户是客户或管理员但不是两者,请创建子类并使用joined-subclass。如果用户可能是两者,也许您只想要一对一的关系映射。