2016-11-21 55 views
0

我正在处理使用Spring MVC的类层次结构上的CRUD:Employee->{Manager, Waiter, Chef}。 我使用单字段表继承策略与字段DTYPE作为鉴别器。 当我需要更新服务员 - >经理(不是一个服务员已被提升,但只是为了解决用户的输入错误!!!)或任何其他实体组合的情况下,我被困住了。休眠:使用更改类型更新条目

的Hibernate本身拒绝改变记录在DTYPE场的类型,即使我明确地做:

managerDAO.update(manager); 

其中managerManager类的对象与现有的ID(belongning的服务员类型(DTYPE =“Waiter”))在数据库中。

现在的问题是:如何更正我的用户的输入错误,这似乎是非常简单和普遍的情况?我只需要让以前的服务员条目成为具有相同ID的管理员条目。

我不知道Hibernate是否有一些技巧来处理这种情况?因为我不想重新发明一个轮子,或者找到一种应该由Hibernate团队预见到的解决方法。

我已经考虑在DTYPE场和

  1. SQL更新
  2. 删除并重新插入正确类型的新项...但是这一切看起来像Hibernate的错误用法。

任何帮助将不胜感激!

回答

0

尝试查询转换为“person”对象的“服务员”对象(假设person是继承树中的父对象),然后将其转换为manger,设置相关字段并保留manger对象。