2014-08-06 8 views
0

Я после SQL запроса, из которого я должен из действительного запроса HQLИспользование подзапросов в HQL

Select Temp.*, 
    (select 
     case 
     when count(tab7.id)>0 then 1 
     else 0 
     end 
     from 
     table7 tab7 
     where 
     tab7.id = Temp.col_3_0_ 
     ) As Col_6_0_ 
     from (Select 
     tab5.col1 As Col_0_0_, 
     tab5.col2 As Col_1_0_, 
     sum(tab5.col3) as col_2_0_, 
     tab5.col4 as col_3_0_, 
    from 

     table5 tab5, 
     table1 tab1 
    table2 tab2 
    where 
    tab2.somecol=tab5.somecol 
     and tab1.id=tab5.id 
    GROUP BY tab5.col1 , 
     tab5.col2     , 
     tab5.col4 ) Temp 

Но я столкнулся проблемы синтаксиса, когда я пытаюсь выполнить запрос HQL таким образом ,

Вопросы:

  1. Есть ли способ использовать подзапросы в from cluase в HQL?

  2. Если нет, то как я могу достичь этого в спящем режиме?

Просьба помочь.

ответ

0

Вы можете использовать обособленные критерии сгореть подзапрос или в запросе в критериях в спящий режим

ниже приведен пример кода для вас

Criteria cr = getSession().createCriteria(Payment.class, "P"); cr.add(Subqueries.propertyNotIn("P.paymentId",DetachedCriteria.forClass(Refund.class, "refund") .add(Restrictions.or(Restrictions.eq("refund.isCancelled", false), Restrictions.isNull("refund.isCancelled"))) .setProjection(Property.forName("refund.payment.paymentId"))))

приветствий

+0

и то, как 'GROUP BY' будет формироваться здесь, включая сумму внутреннего столбца подзапроса ('tab5.col3') –

+0

Arun, если во внутреннем запросе есть сумма, чем нет значения группы по – arjun

Смежные вопросы