Hibernate:更新类型

时间:2016-11-21 15:23:25

标签: java hibernate crud

我正在使用Spring MVC在一个类hierarhy:Employee->{Manager, Waiter, Chef}上处理CRUD。 我使用单表继承策略,字段DTYPE作为鉴别器。 在我需要更新服务员的情况下,我遇到的情况是什么 - >经理(不是服务员已晋升的情况,只是为了修复用户的输入错误!!!)或任何其他实体组合。

Hibernate本身拒绝改变DTYPE字段中记录的类型,即使我明确地这样做了:

managerDAO.update(manager);

其中managerManager类的对象,其中DB中已存在Id(属于Waiter类型(DTYPE =“Waiter”))。

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

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

我已经考虑了

  1. DTYPE字段上的SQL更新和
  2. 删除并重新插入正确类型的新条目......但这看起来都是Hibernate的错误用法。
  3. 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

尝试查询"服务员"对象投射到一个人#34; object(假设person是继承树中的父对象),然后将其转换为manger,设置相关字段并保留manger对象。