hibernate 怎么实现嵌套子查询 ?
现有下列sql:
select * from schedule_prod_log where barcode_id in
( select barcode_id from
(select barcode_id , (sum(load) - sum(down)) amt
from schedule_prod_log
group by barcode_id ) t
where t.amt>0 ) and schedule_id = 1001 ;
上述sql在 sqlplus 中都是能够执行的。
说明:
ORM对象 - > 数据库表 注释
ScheduleProdLog - > schedule_prod_log ——
barcode - > barcode_id barcode 是 ScheduleProdLog 中的对象属性
schedule - > schedule_id schedule 是 ScheduleProdLog 中的对象属性
load、down 都是ScheduleProdLog 中的属性
我写的hql是 :
String hql = " select * from ScheduleProdLog sp where sp.barcode in
( select code from
(select s.barcode.barcodeId as code, (sum(s.load) - sum(s.down)) as amt
from ScheduleProdLog s
group by s.barcode.barcodeId )
where amt > 0 )
and sp.schedule.id = " + schedule.getId()
----------------------------------------------------------------------------------------------
String sql = "select s.barcode.barcodeId as code, (sum(s.load) - sum(s.down)) as amt
from ScheduleProdLog s
group by s.barcode.barcodeId ";
Session session = getSession();
Query query = session.createQuery(sql);
List list = query.list();
前面的sql是能够执行的。
可是外面还需要嵌套……
如果执行 " select * from ( " + sql + " ) "; 就会出问题,说语法错误。
我需要通过对 amt > 0 得到 barcode 然后用得到的 barcode
改写出的hql 能在 getHibernateTemplate().find(sql); 中执行是最好。
谢谢!