我有四节课。Person、NaturalPerson(继承自 Person)、GroupFamilyMember(继承自 NaturalPerson)、QuotationHolder(继承自 GroupFamilyMember)。
他们都共享相同的 ID。
我的问题是以下一个:
有一种方法可以根据文档编号返回现有的 NaturalPerson(存储在 DB 中)对象。然后,我必须创建一个 QuotationHolder,并且我希望 QuotationHolder 对象包含检索到的 NaturalPerson 对象。
问题是我不能像这样投射对象(我知道原因):
QuotationHolder quotationHolder = (QuotationHolder) naturalPerson;
我尝试创建一个新的 QuotationHolder 对象并使用反射将其值设置为 naturalPerson 的对象值。
但是当我失去对检索对象的引用时,当我想级联保存时,NHibernate 给了我以下异常:
具有相同标识符值的不同对象已与会话关联
我猜它试图将对象保存为新对象。
只需考虑:
ID 使用 HILO 算法设置。映射不能改变,类也不能改变。