【发布时间】:2010-12-09 15:00:30
【问题描述】:
请您帮我找出以下问题的更好解决方案... 我的域模型有一个层次结构:
class Document {
Int Id;
String Title;
}
class Agreement : Document {
DateTime Signed;
}
持久化策略是 Table-per-class。 IE。 2 个表格:“文档”(Id,...)和“协议”(Fk_document,...)
第一个操作是注册文件。目前我不知道文档的真实类型。所以我创建新文档并填写其属性“标题”。
一段时间后,我收到了更多信息。根据它,先前注册的文件实际上是在某个日期签署的协议。现在我可以填写协议的“已签署”属性。
但要做到这一点,有必要以某种方式将类型从文档转换为协议。我可以像这样进行 SQL 调用:
INSERT INTO AGREEMENTS (FK_DOCUMENT, SIGNED_DATE) VALUES ( 1111111, TO_DATE('01-01-2000') )
(其中 '1111111' 是 Hibernate 在第一次保存文档时分配给文档的 ID)
我相信这根本不是最好的方法!但是我找不到其他人... 谢谢!
(我想出了这个例子,实际用例比较困难,我不想妨碍这个问题。文档必须尽快保存)
【问题讨论】:
标签: nhibernate hibernate orm inheritance casting