1
我是流利n-hibernate的新手。System.IndexOutOfRangeException:在使用n-hibernate的結果中找不到指定列
我使用流利的nHibernate連接到我的應用程序中的MYSQL數據庫。
public class ProcResult
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual string Price { get; set; }
public virtual int AddressID { get; set; }
public virtual string Address { get; set; }
public virtual string Pincode { get; set; }
}
我在我的SQL創建的例程(程序)爲::
CREATE DEFINER=`root`@`localhost` PROCEDURE `testProc`()
BEGIN
select a.ID, a.Name, a.Price, a.AddressID, b.Address, b.Pincode from expediads a join adresses b on a.addressid=b.id;
END
的hbm.xml文件中爲例程(存儲過程如下結果集映射類被聲明)爲:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="TestHBN">
<sql-query name="testProc">
<return alias="PR" class="TestHBN.Models.ProcResult, TestHBN">
<return-property name="ID" column="ID"/>
<return-property name="Name" column="Name" />
<return-property name="Price" column="Price" />
<return-property name="AddressID" column="AddressID" />
<return-property name="address" column="address" />
<return-property name="pincode" column="pincode" />
</return>
Call testProc;
</sql-query>
</hibernate-mapping>
而且這對結果集類別的映射:
public class ProcResultMap : ClassMap<ProcResult>
{
public ProcResultMap()
{
Id(x => x.ID).GeneratedBy.Identity().Column("ID");
Map(x => x.Name).Column("Name");
Map(x => x.Price).Column("Price");
Map(x => x.AddressID).Column("AddressID");
Map(x => x.Address).Column("Address");
Map(x => x.Pincode).Column("Pincode");
}
}
存儲過程返回兩個表「exdiads」和「adress」中的數據。但是我希望結果集存儲在自定義類中,在此處聲明爲「ProcResult」。
我收到以下錯誤:
System.IndexOutOfRangeException: Could not find specified column in results: Address2_0_
感謝, 薩洛尼
你是怎麼調用存儲過程的?它應該通過像Session.GetNamedQuery(「testProc」)這樣的命名查詢; – rivarolle
我打電話給存儲過程爲 var list = session.GetNamedQuery(「testProc」)。List(); – Saloni
如果我不將ID聲明爲標識列,那麼我收到一條錯誤消息:「實體'ProcResult'沒有標識映射。使用Id方法映射您的標識屬性。例如:Id(x = > x.Id)。「 – Saloni