在一个查询中检索多个实体时,NHibernate错误system.object []

时间:2017-10-02 11:51:25

标签: 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;

但是当我使用此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尝试转换为列表

1 个答案:

答案 0 :(得分:1)

这是因为您的结果集可能是一个多维数组,其中第一列代表客户端,第二列包含转运器。

如果您更改代码会发生什么:

IQuery requete = this.CreateQuery(QueryString);

var result = requete.List();

var clients = result[0] as IEnumerable<Client>;

(我没有在这个系统上安装NHibernate,所以我不能在没有创建和设置新项目的情况下快速测试一下。:)