我的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>
答案 0 :(得分:2)
是CommonReferal
和CurrentReferralSttaus
之间的映射问题吗?出于兴趣,如果您尝试这样做会发生什么: -
<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>