2011-12-10 6 views
3

J'ai une requête nommée dans mon fichier de mappage nhibernate, et chaque fois que j'exécute le code, il ne crée pas la Session avec le message 'Erreurs dans les requêtes nommées', et aucune exception interne ou autre chose pointant vers ce qui ne va pas avec ma requête nommée. Je suis très novice dans l'utilisation de nhibernate mais je suis sûr d'avoir tout configuré correctement (par exemple, le fichier de mappage est une ressource incorporée et les classes utilisées dans la requête sont mappées correctement).Requêtes nommées Erreur dans nhibernate

Quelqu'un peut-il suggérer s'il y a une erreur évidente ou un problème avec mon fichier de mappage qui peut causer cette erreur.

fichier de mappage:

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

Répondre

2

Est-ce un problème de correspondance entre CommonReferal et CurrentReferralSttaus. Sur intérêt ce qui se passe si vous essayez ceci: -

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

Une autre pensée rapide peut vous essayer de supprimer le mot-clé fetch comme un à un sont toujours prêts tiré par les cheveux de toute façon.

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