【发布时间】:2011-10-11 15:58:38
【问题描述】:
问题描述:
我正在尝试使用输入参数执行存储过程。从 MSSQL 2008 SQL Studio 运行时,存储过程可以正确执行。但是,在使用 NHibernate 将其作为命名查询运行时出现错误。
我在配置 SessionFactory 时收到错误消息。 因此我认为我没有正确映射命名查询。
存储过程详细信息:
过程名称:CASCADE_POSITIONTEMPLATE_PERMISSIONS
输入参数:PositionTemplateId
存储过程返回一个计数,我想返回封装在具有指定属性的PositionTemplateUpdateCascadeResult 类中。
命名查询/类映射:
命名查询映射:
<hibernate-mapping default-cascade="none" xmlns="urn:nhibernate-mapping-2.2"
assembly="StudentVoiceGroups.Entities" namespace="StudentVoiceGroups.Entities" >
<sql-query name="CASCADE_POSITIONTEMPLATE_PERMISSIONS" cacheable="false">
<return class="PositionTemplateUpdateCascadeResult" alias="result">
<return-property name="UpdatedPositionsCount">
<return-column name="UpdatedPositionsCount" />
</return-property>
</return>
exec CASCADE_POSITIONTEMPLATE_PERMISSIONS :PositionTemplateId
</sql-query>
</hibernate-mapping>
以下是我想要返回的类:
public class PositionTemplateUpdateCascadeResult
{
public int UpdatedPositionsCount { get; set; }
}
当我在 MSSQL Studio 中执行该过程时:
EXEC [CASCADE_POSITIONTEMPLATE_PERMISSIONS] 15
我得到以下
如果还需要什么,请告诉我。
编辑:当我删除返回类时,我能够完成这项工作: 以下映射正常工作:
<hibernate-mapping default-cascade="none" xmlns="urn:nhibernate-mapping-2.2"
assembly="StudentVoiceGroups.Entities" namespace="StudentVoiceGroups.Entities" >
<sql-query name="CASCADE_POSITIONTEMPLATE_PERMISSIONS" cacheable="false">
exec CASCADE_POSITIONTEMPLATE_PERMISSIONS :PositionTemplateId
</sql-query>
</hibernate-mapping>
返回类应该是映射到表的实体吗?就我而言,这是一个简单的类。我认为返回类就像我们使用 ResultTransformer 一样使用。
【问题讨论】:
-
我没有发布该过程,因为我认为命名查询映射是问题,但如果发布它会有所帮助,请告诉我
标签: hibernate stored-procedures fluent-nhibernate named-query