2009-03-12 18 views
0

Wir haben eine Situation, in der wir eine Beziehung definieren wollen, in der eine Klasse (Modul genannt) mit einem Module-Objekt, das ein Vorgänger ist, verknüpft sein kann. Es kann keine oder keine Vorgänger geben. Die Klasse sieht wie folgt aus:Nhibernate Eins-zu-Eins-Zuordnung einer Klasse mit sich selbst

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

    // other stuff here 

    public Module Predecessor 
    { 
     get; 
     set; 
    } 
} 

Und wir haben unsere Mapping definiert, so dass Predecessor eine Eigenschaft des Typs Modul ist etwa so:

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

Allerdings bekommen wir Beschwerden über die Zuordnung nicht in der Lage, kompilieren, weil es den Typ "Modul" nicht finden kann. Wir haben den langen Namen für die Klasse versuchen

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

und den vollqualifizierten Namen für die Klasse

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

ohne Erfolg. Meine Frage ist:

Sind wir dies richtig zuordnen, und wenn nicht dann wie wir es richtig zuordnen?

Antwort

2

Sie könnten das many-to-one Element verwenden:

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

Beachten Sie, dass Sie eine Spalte in der Tabelle müssen die Beziehung zu definieren.

+0

Das ist richtig. Ich wollte nur hinzufügen, dass der Grund, warum es nicht kompiliert ist, dass Sie keine Domänenklassen in einem Attribut 'Typ' angeben können; Sie müssen eines der Elemente verwenden, die das 'class'-Attribut unterstützen (wie viele-zu-eins). –

+0

@darin - Ahh, danke für die Info, diese Lösung hat funktioniert! @Stuart - hilfreicher Tipp, danke! Wir haben viele Fehler bekommen, dass es den Typ mit dem ursprünglichen Mapping nicht gefunden hat –

Verwandte Themen