3

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>
4

1 に答える 1

2

CommonReferalとの間のマッピングの問題ですかCurrentReferralSttaus。これを試すとどうなるか興味があります:-

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

fetchとにかく、1対1は常に熱心にフェッチされるため、キーワードを削除してみてください。

<query name="GetOpenReferral">
<![CDATA[
   from CommonReferral ref
    inner join ref.Status referralStatus
    where ref.PatientID = :patientId
    and referralStatus.IsResolved = 0
  ]]>
</query>
于 2011-12-11T14:23:38.807 に答える