2011-12-10 49 views
3

我在我的nhibernate映射文件中有一個命名查詢,並且每次運行代碼時,都無法使用消息'命名查詢中的錯誤'創建會話,並且沒有內部異常或其他任何內容指出我的命名查詢有什麼問題。我對使用nhibernate非常陌生,但我確定我已經正確設置了一切(即映射文件是嵌入式資源,並且查詢中使用的類已正確映射)。nhibernate中的命名查詢錯誤

任何人都可以建議是否有一個明顯的錯誤或問題與我的映射文件,這可能會導致此錯誤。

映射文件:

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
       schema="SmokefreeServices.Common" 
       assembly="Model.Smoking" 
       namespace="Model.Smoking"> 

<class name="CommonReferral" table="Referral"> 

<id name="ID"> 
    <generator class="identity" /> 
</id> 

<property name="PatientID" /> 
<property name="Module" /> 
<property name="OriginalModule" /> 
<property name="ReferralSource" /> 
<property name="OtherReferralSource" /> 
<property name="ReferralDate" /> 
<property name="ReferralComments" /> 
<property name="CreatedBy" /> 
<property name="CreatedDate" /> 
<property name="UpdatedBy" /> 
<property name="UpdatedDate" /> 

<one-to-one name="Status" class="CurrentReferralStatus" fetch="join" /> 

<bag name="StatusHistory" inverse="true" lazy="true"> 
    <key column="ReferralID" /> 
    <one-to-many class="ReferralStatus" /> 
</bag> 

</class> 

<query name="GetOpenReferral"> 
<![CDATA[ 
    from CommonReferral ref 
    inner join fetch ref.Status referralStatus 
    where ref.PatientID = :patientId 
    and referralStatus.IsResolved = 0 
    ]]> 
</query> 

</hibernate-mapping> 

回答

2

是否CommonReferalCurrentReferralSttaus之間的映射問題。出於興趣,如果你試試這個會發生什麼: -

<query name="GetOpenReferral"> 
<![CDATA[ 
    from CommonReferral ref 
    where ref.PatientID = :patientId 
    ]]> 
</query> 

另一種快速的思想,你可以嘗試刪除關鍵字fetch爲一到一個總是渴望獲取反正。

<query name="GetOpenReferral"> 
<![CDATA[ 
    from CommonReferral ref 
    inner join ref.Status referralStatus 
    where ref.PatientID = :patientId 
    and referralStatus.IsResolved = 0 
    ]]> 
</query> 
相關問題