将列表添加到HQL查询

时间:2013-07-04 13:52:17

标签: c# nhibernate fluent-nhibernate

我正在尝试将一个列表添加到HQL查询中 - 作为IN(..)语句的一部分,但NH不断抛出它,说它无法找到该参数。

有问题的参数目前被()

包围
SELECT NEW 
   DocumentRevisionDTO(xwpd.Filename, ds.Reference) 
   FROM XrefWordPefectDocumentsEntity xwpd, DocServerEntity ds
   WHERE 
   xwpd.TaskCode IN (:TaskCodes)
   AND ds.Reference = xwpd.DocumentServerRef
   ORDER BY wpd_date DESC

我正在使用以下内容添加我的参数:

public virtual void SetHQLParamListValue<Type>(string property, IEnumerable<Type> listValue)
{
     CurrentHQLStatement.SetParameterList(property, listValue);
}

整个代码 - 用于上下文:

public DocumentRevisionDTO GetLastestDocumentRevisionByTaskCodes(List<int> taskCodes)
{
    _historyRepo.PrepareHQLStatement(@"SELECT NEW 
    DocumentRevisionDTO(xwpd.Filename, ds.Reference) 
    FROM XrefWordPefectDocumentsEntity xwpd, DocServerEntity ds
    WHERE xwpd.TaskCode IN (:TaskCodes)
    AND ds.Reference = xwpd.DocumentServerRef
    ORDER BY wpd_date DESC");

    _historyRepo.SetHQLParamListValue<int>(":TaskCodes", taskCodes);

    return _historyRepo.ExecuteHQLStatementAsT<DocumentRevisionDTO>(1).SingleOrDefault();
}

准备声明按原样说明。上面附上了添加参数。 ExecuteHQLStatementAsT只是处理我们缺乏关系的一种简单方法。

思想?

0 个答案:

没有答案