NHibernate map class 属性查询
NHibernate map class properties to query
我正在尝试映射 class 以使用 NHibernate
调用存储过程
我有一个 class:
public class OrderDetails
{
public virtual int OrderNumber { get; set; }
public virtual DateTime OrderDate { get; set; }
public virtual int ProductCode { get; set; }
public virtual string ProductName { get; set; }
public virtual int Quantity { get; set; }
public virtual decimal Price { get; set; }
}
和此 class 的映射:
<class name="OrderDetails" >
<id name="OrderNumber" column="ID"/>
<property name="OrderNumber" column="ID"/>
<property name="OrderDate" column="OrderDate"/>
<property name="ProductCode" column="productCode"/>
<property name="ProductName" column="Name"/>
<property name="Quantity" column="Quantity"/>
<property name="Price" column="UnitPrice"/>
<loader query-ref="GetOrdersByDate" />
</class>
<sql-query name="GetOrdersByDate" callable="true">
exec [dbo].[sp_OrdersByDate] :DateFrom, :DateTo
</sql-query>
当我调用此查询时出现异常
Could not find a setter for property 'ID' in class 'OrderDetails'
如何将这些列映射到 class 属性?
免责声明:准备删除此...如果仍然没有帮助...
这是我的SP(MSSQL)
CREATE PROCEDURE [dbo].[sp_OrdersByDate]
@DateFrom DateTime,
@DateTo DateTime
AS
BEGIN
SET NOCOUNT ON;
SELECT 1 as ID
, '2011-01-01' AS OrderDate
, 123 AS productCode
, 'XYZ' AS Name
, 1 AS Quantity
, 100 AS UnitPrice
END
GO
这是映射(已测试)
<class name="OrderDetails" >
<id name="OrderNumber" column="ID" />
<property name="OrderDate" column="OrderDate"/>
<property name="ProductCode" column="productCode"/>
<property name="ProductName" column="Name"/>
<property name="Quantity" column="Quantity"/>
<property name="Price" column="UnitPrice"/>
<loader query-ref="GetOrdersByDate" />
</class>
<sql-query name="GetOrdersByDate" callable="true">
<return class="OrderDetails"></return>
exec [dbo].[sp_OrdersByDate] :DateFrom, :DateTo
</sql-query>
这是查询 (有效)
var query = session.GetNamedQuery("GetOrdersByDate");
query.SetParameter("DateFrom", new DateTime(2013, 10, 26));
query.SetParameter("DateTo", new DateTime(2020, 12, 26));
var list = query.List<OrderDetails>();
我正在尝试映射 class 以使用 NHibernate
调用存储过程我有一个 class:
public class OrderDetails
{
public virtual int OrderNumber { get; set; }
public virtual DateTime OrderDate { get; set; }
public virtual int ProductCode { get; set; }
public virtual string ProductName { get; set; }
public virtual int Quantity { get; set; }
public virtual decimal Price { get; set; }
}
和此 class 的映射:
<class name="OrderDetails" >
<id name="OrderNumber" column="ID"/>
<property name="OrderNumber" column="ID"/>
<property name="OrderDate" column="OrderDate"/>
<property name="ProductCode" column="productCode"/>
<property name="ProductName" column="Name"/>
<property name="Quantity" column="Quantity"/>
<property name="Price" column="UnitPrice"/>
<loader query-ref="GetOrdersByDate" />
</class>
<sql-query name="GetOrdersByDate" callable="true">
exec [dbo].[sp_OrdersByDate] :DateFrom, :DateTo
</sql-query>
当我调用此查询时出现异常
Could not find a setter for property 'ID' in class 'OrderDetails'
如何将这些列映射到 class 属性?
免责声明:准备删除此...如果仍然没有帮助...
这是我的SP(MSSQL)
CREATE PROCEDURE [dbo].[sp_OrdersByDate]
@DateFrom DateTime,
@DateTo DateTime
AS
BEGIN
SET NOCOUNT ON;
SELECT 1 as ID
, '2011-01-01' AS OrderDate
, 123 AS productCode
, 'XYZ' AS Name
, 1 AS Quantity
, 100 AS UnitPrice
END
GO
这是映射(已测试)
<class name="OrderDetails" >
<id name="OrderNumber" column="ID" />
<property name="OrderDate" column="OrderDate"/>
<property name="ProductCode" column="productCode"/>
<property name="ProductName" column="Name"/>
<property name="Quantity" column="Quantity"/>
<property name="Price" column="UnitPrice"/>
<loader query-ref="GetOrdersByDate" />
</class>
<sql-query name="GetOrdersByDate" callable="true">
<return class="OrderDetails"></return>
exec [dbo].[sp_OrdersByDate] :DateFrom, :DateTo
</sql-query>
这是查询 (有效)
var query = session.GetNamedQuery("GetOrdersByDate");
query.SetParameter("DateFrom", new DateTime(2013, 10, 26));
query.SetParameter("DateTo", new DateTime(2020, 12, 26));
var list = query.List<OrderDetails>();