我正在尝试将一个列表添加到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
只是处理我们缺乏关系的一种简单方法。
思想?