NHibernate的常見問題及解決方案

 

問題web

異常:in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query) [from Customer]sql

解決方案:查看HQL語句查詢的是不是實體類,映射文件屬性是否正確:複製到輸出目錄à始終複製 。。生成操做à嵌入的資源。app

問題2hibernate

異常:缺乏必需的屬性「name」。xml

解決方案:查看映射文件裏,是否哪一個<property>節點缺乏name屬性資源

問題3it

      異常:「NHibernate.Proxy.CastleProxyFactory」的類型初始值設定項引起異常。io

   解決方案:Nhibernate版本問題。。刪除數據訪問層與界面層對Nhibernate的引用,改成引用nhibernate2.0組件,改配置文件(App.config/web.config),到NHibernate-.GA-src/src/NhibernateText下面複製app.config.中Nhibernate的配置信息。table

問題4ast

異常:Could not find the dialect in the configuration

   解決方案:配置文件錯誤。WEB項目應在web.config配置文件裏配置Nhibernate。應用程序在App.config裏配置Nhibernate.

問題5

      異常:could not resolve property: customerId of: CompanyModels.Customer [from CompanyModels.Customer c where c.customerId=:customerId]

解決方案:HQL語句裏字段是表明實體類的屬性,區分大小寫。

 

問題6

    異常:不該有 <hibernate-mapping xmlns='urn:nhibernate-mapping-2.0'>。

      解決方案:把2.0改成2.2便可,在CodeSmith中生成映射文件時爲2.0,而Nhibernate2對應2.2

問題7

      異常:元素 命名空間「urn:nhibernate-mapping中的「bag」。 的子元素 命名空間「urn:nhibernate-mapping中的「many-to-many」。 無效。應爲可能元素的列表: 命名空間「urn:nhibernate-mapping中的「loader, sql-insert, sql-update, sql-delete, sql-delete-all, filter」。。

       解決方案:多對多關係映射錯誤,看映射文件中<many-to-many>節點是否有多個,若是有請刪除一個。只要引用對應的實體類便可。如:

<bag name="OrderProducts" table="OrderProduct" inverse="false" lazy="true" cascade="all-delete-orphan">

              <key>

                   <column name="`Order`" length="4" sql-type="int" not-null="true"/>

              </key>

      <many-to-many class="CompanyModels.Order, CompanyModels">

        <column name="Order" length="4" sql-type="int" not-null="true"/>

      </many-to-many>

              <many-to-many class="CompanyModels.Product, CompanyModels">

                   <column name="Product" length="4" sql-type="int" not-null="true"/>

              </many-to-many>

         </bag>

刪除第一個<many-to-many>便可解決.

相關文章
相關標籤/搜索