2014-01-17 67 views
0

我是HQL的新手,我正在研究子查詢。Hibernate查詢語言中的SQL子查詢

我有以下SQL子查詢:

select * from (
    select * from table order by columnname 
) as subquery 
where columnvalue = 'somevalue'; 

我想火在HQL查詢。我寫了下面的代碼:

Result = session.createQuery("from (from table order by columnname) as subquery where columnvalue = :somevalue") 
    .setParameter(/*setting all parameters*/) 
    .list(); 

我得到這個異常:

QuerySyntaxException:unexpedted令牌:(第1行,第10列[從(從...)]

我的SQL查詢給了我正確的結果如何在HQL中編寫它?

+0

你能寫出你正在使用的真正的查詢嗎? – jcho360

+0

select * from(select * from employee order by salary)as subquery where manager ='XYZ'by department; – void

+0

爲什麼你有一個子查詢?要麼按工資排序,要麼按部門排序!?!?!? – Strawberry

回答

0

我沒有想到HQL可以做子查詢FROM子句

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-subqueries

注了一句:

Note that HQL subqueries can occur only in the select or where clauses.

這將是更好,如果你EXCUTE native SQL

+0

我試圖執行查詢作爲本機SQL,但它拋出「org.hibernate.exception.GenericJDBCException:無法提取ResultSet」異常。我發射如下:session.createSQLQuery(「select * from(select * from employee order by salary)as subquery where manager ='XYZ'group by department」)。 – void