6

これが私の階層です:

class abstract Entity{/*メンバー*/}//エンティティテーブルにマッピング
class abstract User:Entity {/ * members */}//ユーザーテーブルにマッピング

class Employee:User{/*メンバーなし*/}//テーブルなし、discriminator = "E"
class Contractor:User{/*メンバーなし*/}//テーブルなし、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>
  <プロパティ.../>
</ class>

<joined-subclass name = "User" extends = "Entity" table = "user">
  <key column = "id" />
  <discriminator column = "type" />
  <プロパティ.../>
  <subclass name = "Employee" discriminator-value = "E" />
  <subclass name = "Contractor" discriminator-value = "C" />
</joined-サブクラス>

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

MappingException:XML検証エラー:名前空間'urn:nhibernate-mapping-2.2'の要素'joined-subclass'には、名前空間'urn:nhibernate-mapping-2.2'の無効な子要素'discriminator'があります。

私は何が欠けていますか?結合されたサブクラスの識別されたサブクラス階層をマップできませんか?

4

2 に答える 2

2

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

于 2011-01-24T18:00:13.637 に答える
2

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

許可された構成については、http://www.nhforge.org/doc/nh/en/index.html#inheritanceを確認してください。

于 2011-01-24T20:17:29.507 に答える