sin cara
sin cara

Reputation: 123

Named Queries Error in nhibernate

I have a named query in my nhibernate mapping file, and every time i run the code, it fails to create the Session with the message 'Errors in named queries', and no inner exception or anything else pointing to what's wrong with my named query. I'm very new to using nhibernate but am sure i have everything set up correctly (i.e. mapping file is an embedded resource, and the classes used in the query are mapped correctly).

Could anyone suggest if there is an obvious error or problem with my mapping file which may cause this error.

Mapping file:

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

Upvotes: 3

Views: 843

Answers (1)

Rippo
Rippo

Reputation: 22424

Is it a mapping problem between CommonReferal and CurrentReferralSttaus. Out of interest what happens if you try this:-

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

Another quick thought can you try and remove the keyword fetch as one-to-one are always eager fetched anyway.

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

Upvotes: 2

Related Questions