2009-03-12 5 views
0

クラス(Moduleという名前)が先行するモジュールオブジェクトに関連する場合とそうでない場合の関係を定義したい場合があります。前任者はゼロか全くない。クラスは次のようになります。Nhibernateと1対1でクラスをマッピングする

public class Module 
{ 
    public int Id 
    { 
     get; 
     set; 
    } 

    // other stuff here 

    public Module Predecessor 
    { 
     get; 
     set; 
    } 
} 

そして、その前身はそうのようなタイプのモジュールのプロパティですので、私たちは私たちのマッピングを定義している:

<class name="Module"> 
    <Id name="Id"> 
     <generator class="native/> 
    </Id 
    <property name="Predecessor" type="Module" "unique="true"/> 
<class> 

しかし私たちは、マッピングができないという苦情を取得していますタイプ "Module"が見つからないためコンパイルできません。私たちは、無駄にクラス

type="STC.EI.JobSubmissionSystem.Data.Domain" 

とクラス

type="STC.EI.JobSubmissionSystem.Data.Domain, STC.EI.JobSubmissionSystem.Data" 

の完全修飾名に長い名前を試してみました。私の質問は次のとおりです:

私たちはこれを適切にマッピングしていますか?そうでなければ、正しくマップしますか?あなたが関係を定義するために、あなたのテーブルの列を必要とする

<class name="Module"> 
    <Id name="Id"> 
     <generator class="native"/> 
    </Id> 
    <many-to-one name="Predecessor" class="Module" column="predecessor_id" /> 
<class> 

注:

答えて

2

あなたがmany-to-one要素を使用することができます。

+0

これは正しいです。コンパイルしない理由は、 'type'属性でドメインクラスを指定できないということだけです。 'class'属性をサポートする要素の1つ(多対1など)を使用する必要があります。 –

+0

@ダリン - ああ、情報ありがとう、このソリューションは働いた! @Stuart - 役立つヒント、ありがとうございました!元のマッピングで型を見つけることができないというエラーが多かった –

関連する問題