2010-08-04 71 views
1

所以下面的hql查詢拋出了一個Antlr.Runtime.NoViableAltException。我能夠確定問題是在order by子句中的member.LastName字段。如果通過查詢從訂單中刪除member.LastName將執行。這個HQL在NHibernate的早期版本中工作得很好,但是它升級到NHibernate 2.1.2.4。如何在不拋出異常的情況下包含member.LastName屬性?任何幫助是極大的讚賞。謝謝!NHibernate 2.1.2.4版本中的HQL查詢有什麼問題?

select chartAssignmentLogRecord 
from ChartAssignmentLogRecord chartAssignmentLogRecord 
inner join chartAssignmentLogRecord.Measure as measure 
inner join measure.ProviderLocation as providerLocation 
inner join providerLocation.Provider as provider 
inner join providerLocation.Address as address 
inner join measure.Member as member 
where chartAssignmentLogRecord.AssignedDate >= :startDate and chartAssignmentLogRecord.ChartModifiedStatus = :modifiedStatus and chartAssignmentLogRecord.AssignedDate =(select max(subChartAssignmentLogRecord.AssignedDate) from ChartAssignmentLogRecord subChartAssignmentLogRecord where subChartAssignmentLogRecord.Measure=chartAssignmentLogRecord.Measure) 
order by chartAssignmentLogRecord.AssignedDate desc, provider.LastName, address.AddressLine1, member.LastName 
+0

你可以創建一個獨立的測試用例嗎? – 2010-08-04 04:32:14

+0

@Mauricio - 如果您問我是否有針對此查詢的單元/集成測試,那麼答案是肯定的。 – Darren 2010-08-04 14:24:34

+0

在這裏黑暗中射擊......但任何愛與measure.Member.LastName在順序而不是? – DanP 2010-08-04 16:45:01

回答

1

感謝DanP,我在measure by子句中使用了measure.Member.LastName而不是member.LastName。不知道爲什麼這個問題解決了,因爲據我所知,我的HQL應該是有效的,並且肯定在早期版本的NHibernate中是有效的。