次のクラスをマップしようとしています。
PessoaFisicaとPessoaJuridica は Pessoaを継承し ます。 ClienteはPessoaと関連付けられており、PessoaJuridicaまたはPessoaFisicaの場合があります。
たとえば、 Cliente オブジェクトを PessoaFisica で保存すると、問題ありません。しかし、更新しようとしてプロパティ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" />
ありがとうございました