Select 在一个查询中检索多个实体时出现NHibernate错误system.object[]
我有这样一个HQL查询:Select 在一个查询中检索多个实体时出现NHibernate错误system.object[],select,nhibernate,hql,Select,Nhibernate,Hql,我有这样一个HQL查询: string QueryString = select client, transporter from BaseClient as client, BaseTrans as transporter where client.tr = transporter.Id and transporter.badge = 1 order by transporter.date; IQuery requete = this.CreateQuery
string QueryString = select client, transporter
from BaseClient as client, BaseTrans as transporter
where client.tr = transporter.Id and transporter.badge = 1
order by transporter.date;
IQuery requete = this.CreateQuery(QueryString);
var result = requete.List();
var clients = result[0] as IEnumerable<Client>;
但是当我使用此hql
时,我收到以下错误:
值“System.Object[]”
不是类型“xxx”
,不能在此常规集合中使用。
参数名称:value
就像but一样,当我在select中省略Transporter
实体时,它就起作用了
比如:
string QueryString = select client
from BaseClient as client, BaseTrans as transporter
where client.tr = transporter.Id and transporter.badge = 1
order by transporter.date;
但我的选择中需要transporter,因为我使用order by
顺便说一下,我有2个hbm Client.hbm.xml和Transporter.hbm.xml。每个hbm都有自己的类和表
我称之为:
IQuery requete = this.CreateQuery(QueryString);
IList<Client> executions = requete.List<Client>();
iQueryRequete=this.CreateQuery(QueryString);
IList executions=requete.List();
当hibernate尝试转换为列表时,它挂起在这一行,这是因为结果集可能是一个多维数组,其中第一列表示客户机,第二列包含转运器 如果像这样更改代码,会发生什么情况:
string QueryString = select client, transporter
from BaseClient as client, BaseTrans as transporter
where client.tr = transporter.Id and transporter.badge = 1
order by transporter.date;
IQuery requete = this.CreateQuery(QueryString);
var result = requete.List();
var clients = result[0] as IEnumerable<Client>;
iQueryRequete=this.CreateQuery(QueryString);
var result=requete.List();
var clients=结果[0]为IEnumerable;
(我没有在这个系统上安装NHibernate,所以我不能在不创建和设置新项目的情况下快速测试一些东西。您的代码在您称之为HQL的地方看起来如何?谢谢您的回答,我修改了我的问题。我加了一行我怎么称呼它