我正在使用Spring MVC在一个类hierarhy:Employee->{Manager, Waiter, Chef}
上处理CRUD。
我使用单表继承策略,字段DTYPE作为鉴别器。
在我需要更新服务员的情况下,我遇到的情况是什么 - >经理(不是服务员已晋升的情况,只是为了修复用户的输入错误!!!)或任何其他实体组合。
Hibernate本身拒绝改变DTYPE字段中记录的类型,即使我明确地这样做了:
managerDAO.update(manager);
其中manager
是Manager
类的对象,其中DB中已存在Id(属于Waiter类型(DTYPE =“Waiter”))。
现在问题是:如何更正用户的输入错误,这看似非常简单和普遍的情况?我只需要让前Waiter条目成为具有相同ID的Manager条目。
我想知道Hibernate是否有一些技巧可以解决这种情况?因为我不想重新发明一个轮子或找到一种解决方法的感觉,这应该由Hibernate团队预见。
我已经考虑了
任何帮助将不胜感激!
答案 0 :(得分:0)
尝试查询"服务员"对象投射到一个人#34; object(假设person是继承树中的父对象),然后将其转换为manger,设置相关字段并保留manger对象。