我有这样的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;
但是当我使用此hql
时,我收到以下错误:
值
"System.Object[]"
不是"xxx"
类型,不能在此通用集合中使用。 参数名称:值
就像Example一样,但是,当我在我的选择中省略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;
但我在我的选择中需要运输车,因为我使用了顺序。
顺便说一句,我有2个hbm Client.hbm.xml和Transporter.hbm.xml。每个hbm都有自己的Class和Table。
我称之为:
IQuery requete = this.CreateQuery(QueryString);
IList<Client> executions = requete.List<Client>();
它挂在这一行,当hibernate尝试转换为列表
答案 0 :(得分:1)
这是因为您的结果集可能是一个多维数组,其中第一列代表客户端,第二列包含转运器。
如果您更改代码会发生什么:
IQuery requete = this.CreateQuery(QueryString);
var result = requete.List();
var clients = result[0] as IEnumerable<Client>;
(我没有在这个系统上安装NHibernate,所以我不能在没有创建和设置新项目的情况下快速测试一下。:)