为什么Hibetnate中用CreateSQLQuery查询sql还是报错?
- SQL code
hql = "select DISTINCT P.* from Account P inner join [Order] o on P.Id = o.AccountId right join (select od.orderID,o1.AccountId from [Order] o1 inner join OrderDetail od on o1.id = od.orderid group by o1.AccountId,od.orderid having count(*) >=2) T on P.Id = T.AccountId where P.AreaId In(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32) and P.Deleted='False' order by P.CreatedOn ";
- C# code
list = session .CreateSQLQuery(hql) .SetFirstResult(skipCount) .SetMaxResults(pageSize + skipCount) .List<T>() .Take(pageSize);
[解决办法]
它报了
Message=关键字 'DISTINCT' 附近有语法错误。
'T' 附近有语法错误。
就说明很可能是sql本身的语法错误
试试先用最简单的sql语句来确认一下
[解决办法]
T是干嘛的
[解决办法]
[解决办法]
查一下sql本身是否有问题,拿出来在查询分析器下执行测试一下.
另外.SetFirstResult(skipCount).SetMaxResults(pageSize + skipCount)
skipCount,pageSize + skipCount 是整型的不?
[解决办法]
CreateSQLQuery 执行的是SQL语句不是HQL语句 可是你写语法是HQL语法 当然会错