我正在尝试映射以下类:
PessoaFisica和PessoaJuridica 继承 Pessoa。 Cliente与Pessoa有关联,可能是PessoaJuridica或PessoaFisica。
例如,当我使用PessoaFisica保存Cliente对象时,没关系。但是当我尝试更新并将属性Pessoa从Cliente设置为PessoaJuridica并尝试更新时,它会更新,但它会在表 TB_PESSOA 中生成一个新行,并且 PessoaFisica 中的旧行不会被删除。它为PessoaJuridica创建了一个新行,但旧行仍然存在。我的映射 XML 有什么问题?为什么 NHibernate 在插入新的多态对象之前不删除旧行?
这些是我正在使用的映射文件
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="SALClassLib.Masterdata.Model" assembly="SALClassLib">
<class name="Pessoa" table="TB_PESSOA">
<id name="Id">
<column name="ID_PESSOA" not-null="true"/>
<generator class="increment" />
</id>
(other properties...)
<joined-subclass name="PessoaFisica" table="TB_PESSOA_FISICA">
<key column="ID_PESSOA" />
(other properties...)
</joined-subclass>
<joined-subclass name="PessoaJuridica" table="TB_PESSOA_JURIDICA">
<key column="ID_PESSOA" />
(other properties...)
</joined-subclass>
</class>
<class name="Cliente" table="TB_CLIENTE">
<id name="Id">
<column name="ID_CLIENTE" not-null="true"/>
<generator class="increment" />
</id>
<many-to-one name="Pessoa" class="Pessoa" cascade="all" column="ID_PESSOA" not-null="true" unique="true" />
谢谢