首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

为啥Hibetnate中用CreateSQLQuery查询sql还是报错

2012-11-04 
为什么Hibetnate中用CreateSQLQuery查询sql还是报错?SQL codehql selectDISTINCT P.*from Account P in

为什么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是干嘛的
[解决办法]
探讨

T是干嘛的

[解决办法]
查一下sql本身是否有问题,拿出来在查询分析器下执行测试一下.

另外.SetFirstResult(skipCount).SetMaxResults(pageSize + skipCount)

skipCount,pageSize + skipCount 是整型的不?
[解决办法]
CreateSQLQuery 执行的是SQL语句不是HQL语句 可是你写语法是HQL语法 当然会错

热点排行