2010-12-21 8 views
0
String SQL_QUERY = "SELECT count(*) FROM (SELECT * FROM Url as U where U.pageType=" + 1 + " group by U.pageId having count(U.pageId) = 1)"; 
query = session.createQuery(SQL_QUERY); 

あなたは、同様に有し、HQLでサブクエリによってグループを使用することができU.pageIdによってU.pageType = 2グループカウント(U.pageId)を持つ= 1)]HQL相当

+0

ソースコードを書式設定するには、エディタに{}ボタンがあります) – bluish

答えて

0

あなたのお問い合わせは、HQLコードとして問題ないようです。エンティティの大文字に注意してください。たとえば、BeanクラスのurlUrlです。

とにかく、SQL言語でクエリを実行する方法はcreateSQLQuery(queryString)です。

0

HQLでは、FROM節でサブクエリを使用できません。それは適切でないなら、あなたはsession.createSQLQuery()を使用することができます

SELECT count(u) FROM Url u WHERE u.pageType = 2 AND 
    1 = (SELECT count(uu) FROM Url uu WHERE u.pageId = uu.pageId) 

:同じ結果が次のクエリ(私はパフォーマンスについてはよく分からないが)によって生成されなければならない(having count(U.pageId) = 1で)この特定のケースでは

+0

上記のクエリは機能しますが、私が必要とするものではありません..私は以下のSQLクエリと正確に等価である必要があります。 from句だけではなく、下記の回避策があるかどうか疑問に思っています.............. select count *(from * from Url where page_type = 2 group by page_id having(count( page_id)= 1)) – Ananth

+0

@kash:更新されました。 – axtavt