2012-09-17 110 views
0

我使用NHibernate與C#getter和在編譯時間它給了我這個錯誤:找不到財產

{"Could not find a getter for property 'idOrder' in class 'FrancosPoS.DBMapping.ordPsf'"} 

我發現這個問題,但我不能得到如何使用它我: Nhibernate - Could not find a getter for property

這是我的映射類:

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping assembly="FrancosPoS" namespace="FrancosPoS.DBMapping" xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="ordPsf" table="ord_psf" lazy="true" > 
    <id name="idOrdPastaF"> 
     <generator class="identity" /> 
     <!--<column name="idOrdPastaF" sql-type="int(11)" not-null="true" />--> 
    </id> 
    <many-to-one insert="false" update="false" lazy="false" name="idOrder"> 
     <column name="idOrder" sql-type="int(11)" not-null="true" /> 
    </many-to-one> 
    <property name="idOrder"> 
     <column name="idOrder" sql-type="int(11)" not-null="true" /> 
    </property> 
    <many-to-one insert="false" update="false" lazy="false" name="idPastaF"> 
     <column name="idPastaF" sql-type="int(11)" not-null="true" /> 
    </many-to-one> 
    <property name="idPastaF"> 
     <column name="idPastaF" sql-type="int(11)" not-null="true" /> 
    </property> 
    . 
    . 
    . 
    <property name="obs"> 
     <column name="obs" sql-type="varchar(50)" not-null="false" /> 
    </property> 
    <property name="price"> 
     <column name="price" sql-type="decimal(8,4)" not-null="true" /> 
    </property> 
    </class> 
</hibernate-mapping> 

這是我的CS類:

namespace FrancosPoS.DBMapping { 

    public partial class ordPsf { 
     public ordPsf() { } 
     public virtual int idOrdPastaF { get; set; } 
     public virtual order order { get; set; } 
     public virtual pastaFeast pastaFeast { get; set; } 
     public virtual salad salad { get; set; } 
     public virtual onTheSide onTheSide { get; set; } 
     public virtual string obs { get; set; } 
     public virtual string price { get; set; } 
    } 
} 

我的猜測是我在做錯誤的映射。由於明顯的原因,我不想讓idOrder獲取/設置,因爲我需要使用該對象。 (此外,我猜測在修復這個問題後,其他ID會發生同樣的錯誤)

回答

0

我不知道你在這裏試試。據映射,你的類必須是:

public partial class ordPsf { 
    public ordPsf() { } 
    public virtual int idOrder { get; set; } 
    public virtual int idPastaF{ get; set; } 
    ..... 
    public virtual string obs { get; set; } 
    public virtual decimal price { get; set; } 
} 
+0

請,如果我從休眠爪哇記錯使用正確的拼寫和語法 –

+0

,我並不想查找的ID其他表格,然後由我自己寫入ordPsf對象。 我只是想把其他表的整個對象拋到ordPsf和(N)Hibernate處理這些ID給我,因爲外鍵。 如果我將我的課程作爲ID映射,我會忽略它,對吧? – gbc921

0

如果你不希望使用公共訪問器的屬性,你可以map to a private field

<column ... access="field" .../> 
+0

我無法使用此選項進行編譯。它表示該選項未聲明: 「XML驗證錯誤:'訪問'屬性未聲明。」 是不是僅用於ID的訪問字段? [映射聲明ID](http://goo.gl/jbGgT) 也許[NHibernate映射生成器](http://nmg.codeplex.com/)做得不對,我錯過了class =「」字段與其他更多[多對一](http://goo.gl/kmlPX)。我會繼續嘗試,看看會發生什麼。 此致, PS .:我編輯是因爲我按Enter而不是Shift + Enter。 – gbc921