我正在尝试使用不同类型用户的User表。我有一个用户类,然后由Customer和Employee以及Manager和admin扩展它们,它们都位于同一个表中,但它们都有不同的鉴别符。
现在我的应用程序是这样的:首先用户进入并以用户身份登录,然后他成为客户或员工。在用户创建客户或员工之后,我想稍后更改为经理或管理员。我该如何更新呢。如何使鉴别器值与实体最初的值不同。
我可以使用简单的sql来更新表中的DTYPE值,但我很确定JPA必须有一些更有效的方法。
或者我是否删除了之前说的“员工”用户并创建了一个新的“管理员”用户。我尝试实例化实体,但它没有给我任何方法,我可以更新该实体的Discriminator。
由于 赛。
答案 0 :(得分:1)
或许最好将User
(例如Customer
,Employee
,Manager
,Admin
)的角色建模为具有一个角色的单独实体与User
的一对一关系(或多对一,如果User
可能同时有多个Role
。然后,如果用户的角色发生变化,您只需删除一个角色并创建另一个角色。
答案 1 :(得分:0)
我认为您可以创建复制构造函数,并实例化一个新对象,例如:
new Employee(existingUser);
因此将复制标识符(@Id
字段),并且当持久化实体时,将触发更新。试试吧。