2012-04-21 70 views
1

尝试HQL,总的NHibernate的n00b。这个HQL查询有什么问题?

public IEnumerable<Log> GetLast(int numRecords, string severity) 
{ 
    var query = _Session.CreateQuery(
     "from Log as l inner join fetch l.UserProfile order by l.TimeStamp desc where l.Severity in (:severities)") 
     .SetParameterList("severities", Translator.SeverityOrHigher(severity)) 
     .SetMaxResults(numRecords) 
     .Enumerable<Log>(); 

    return query; 
} 

Translator.SeverityOrHigher返回IList<string>

我有一个Log对象,它以多对一的方式引用了一个UserProfiles对象。这些对象持久化到数据库分别LogsUserProfiles

我得到以下异常扔到var query = ...行:

Exception of type 'Antlr.Runtime.MismatchedTokenException' was thrown. 

我不知道,即使是手段,而谷歌搜索是不是特别有帮助。我不知道HQL是否有问题,或者我设置的方式。任何指导将不胜感激。

+0

这是一个列表,它不是空的。 – 2012-04-21 15:01:51

回答

2

我没有用NHib的年龄......你试图通过声明在最后把订单?可能它是这样工作的,我总是把它放在最后。

+0

这样做。我希望错误信息不那么神秘。 – 2012-04-21 15:12:24

+0

对,那个异常消息不是很有用:( – 2012-04-21 15:17:26