質問

これが私の継承者です:

class abstract Entity { /*members*/ } // mapped to entity table
class abstract User : Entity { /*members*/ } // mapped to user table

class Employee : User { /*no members*/ } // no table, discriminator = "E"
class Contractor : User { /*no members*/ } // no table, discriminator = "C"

2つの別々のHBMファイルのマッピングは次のとおりです。

<class name="Entity" table="entity" xmlns="urn:nhibernate-mapping-2.2">
  <id name="Id" column="id">
    <generator class="guid.comb" />
  </id>
  <property ... />
</class>

<joined-subclass name="User" extends="Entity" table="user">
  <key column="id" />
  <discriminator column="type" />
  <property ... />
  <subclass name="Employee"   discriminator-value="E" />
  <subclass name="Contractor" discriminator-value="C" />
</joined-subclass>

以下は私が得る例外です:

MappingException:XML検証エラー:名前空間「urn:nhibernate-mapping-2.2」の要素「結合サブカラス」は、名前空間「urn:nhibernate-mapping-2.2」に無効な子要素「識別子」を持っています。

何が足りないの?参加したサブカラスの差別されたサブクラス階層をマッピングできませんか?

役に立ちましたか?

解決

あなたがしたいことは現在不可能です。

小切手 http://www.nhforge.org/doc/nh/en/index.html#inheritance 許可されたコンストラクト用。

他のヒント

結合されたサブカラスには、別のテーブルにあるため、識別子がありません。それがサブクラスが何であるかを知っている方法です。差別器を使用する場合は、すべてのサブクラスに1つのテーブルを使用すると、 サブクラス マッピング

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top