2011-12-10 11 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との間のマッピングの問題です。関心の外に何があなたがこれを試すとどうなる: - あなたがしようと一対一としてのキーワードfetchを削除することができます

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

別の迅速な思考が、とにかく常にフェッチ熱望しています。

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