请您帮我找出以下问题的更好解决方案...... 我的域模型有一个层次结构:
class Document {
Int Id;
String Title;
}
class Agreement : Document {
DateTime Signed;
}
持久策略是每班表。即2个表:'文件'(Id,...)和'协议'(Fk_document,...)
首先是文件的注册。此刻我不知道文件的真实类型。所以我创建了新的Document并填写了它的属性'Title'。
一段时间后,我收到了其他信息。根据它,以前注册的文件实际上是在某个日期签署的协议。现在我可以填写“已签署”协议的财产。
但要做到这一点,有必要以某种方式将类型从Document转换为Agreement。我可以像这样进行SQL调用:
INSERT INTO AGREEMENTS (FK_DOCUMENT, SIGNED_DATE) VALUES ( 1111111, TO_DATE('01-01-2000') )
(其中'1111111'是Hibernate第一次保存时分配给文档的ID)
我认为这不是最好的方式!但我找不到任何其他人...... 谢谢!
(我想到这个例子,真正的用例是相当困难的,我不想妨碍这个问题。文件必须尽快保存)
答案 0 :(得分:1)
当您需要“更改持久化实体的类”时,这表明您并不真正想要将其建模为类层次结构。相反,使用组合。