2010-03-23 6 views
1

NHibernate 2.1.2를 사용하여 일대 다 관계를 구현하려고하지만 "연관 참조가 매핑되지 않은 클래스"예외를 계속 가져 오려고합니다. 내 hbm.xml 파일이 임베디드 리소스라는 것을 확인했습니다. 다음은 클래스와 매핑입니다. 어떤 아이디어? 이에 대한 약속 클래스 또는 매핑NHibernate 매핑되지 않은 클래스 예외

<many-to-one name="Promise" fetch="join" column="Promise" /> 

아무것도 매핑의 클래스

public virtual Promise Promise{ get; set; } 

에서 OrderStatus 에서

public class OrderStatus 
{ 
    public virtual decimal MainCommit { get; set; } 
    public virtual decimal CommitNumber { get; set; } 
    public virtual string InvoiceNumber { get; set; } 
    public virtual string ShipTo { get; set; } 
    public virtual string CustomerOrderNumber { get; set; } 
    public virtual string Station { get; set; } 
    public virtual DateTime RequestedShipDate { get; set; } 
    public virtual decimal EstimatedValue { get; set; } 
    public virtual decimal EstimatedWeight { get; set; } 
    public virtual string Customer { get; set; } 
    public virtual DateTime InvoiceDate { get; set; } 
    public virtual ICollection<Promise> Promises { get; set; } 
} 

<class name="AladdinDb.Models.OrderStatus, AladdinDb" table="vorder_status"> 
    <id name="CommitNumber" type="decimal" column="commit_no"> 
     <generator class="assigned"> 
      <param name="property"> 
       Plan 
      </param> 
     </generator> 
    </id> 
    <property name="MainCommit" column="main_commit" type="decimal" /> 
    <property name="InvoiceNumber" column="invoice_no" type="string" /> 
    <property name="ShipTo" column="ship_to" type ="string"/> 
    <property name="CustomerOrderNumber" column="cust_order_no" type="string" /> 
    <property name="Station" column="station" type="string" /> 
    <property name="RequestedShipDate" column="req_ship_date" type="DateTime" /> 
    <property name="EstimatedValue" column="estimated_value" type="decimal"/> 
    <property name="EstimatedWeight" column="estimated_weight" type="decimal" /> 
    <property name="Customer" column="customer" type="string" /> 
    <property name="InvoiceDate" column="invoice_date" /> 
    <set name="Promises"> 
     <key column="commit_no"></key> 
     <one-to-many class="Promise" /> 
    </set> 
</class> 

public class Promise 
{ 
    public virtual decimal CommitNumber { get; set; } 
    public virtual DateTime PromiseDate { get; set; } 
    public virtual string WhoAsked { get; set; } 
    public virtual string WhoGave { get; set; } 
    public virtual string Iffy { get; set; } 
} 

<class name="AladdinDb.Models.Promise, AladdinDb" table="promise"> 
    <id name="CommitNumber" type="decimal" column="commit_no"> 
     <generator class="assigned" /> 
    </id> 
    <property name="PromiseDate" column="promise_date" /> 
    <property name="WhoAsked" column="who_asked" /> 
    <property name="WhoGave" column="who_gave" /> 
    <property name="Iffy" column="iffy" /> 
</class> 

답변

3

클래스 매핑과 마찬가지로 연결에서 정규화 된 클래스 이름을 사용해야합니다.

정규화되지 않은 클래스 이름을 사용하려는 경우 hibernate-mapping 요소의 assemblynamespace 속성을 사용하십시오.

<set name="Promises"> 
    <key column="commit_no" /> 
    <one-to-many class="AladdinDb.Models.Promise, AladdinDb" /> 
</set> 
+0

Grrr. 나는 "정규화"를 시도했지만 모델을 빠뜨렸다. 어떤 시점에서 초보자 실수를 저 지르지 않을까합니다. 감사!! –

1

.

+0

이 답변은 저의 관계를 바꿔 놓았습니다. 단일 OrderStatus에 대해 Promise 행이 0 개 이상있을 수 있습니다. –

관련 문제