2015-04-14 42 views
0

我有本地的SQL,我想移動到Hibenate的標準API,Hibenate標準API與 「條款」

這就是:

SELECT * 
FROM HV_LMA_VI t0 
WHERE t0.HV_ID IN 
       (SELECT t2.HV_ID 
       FROM Z_LSZERG_HV t4, 
        Z_LSZ_ERG t3, 
        HERSTELLUNGSVARIANTE t2 
       WHERE ((t3.LSZ_ID = 204) 
         AND ((t4.HV_ID = t2.HV_ID) 
         AND ((t3.ERG_ID = t4.ERG_ID) 
         AND (t3.LSZ_ID = t4.LSZ_ID))))); 

所有需要的entites (HV_LMA_VI, Z_LSZERG_HV, Z_LSZ_ERG,)存在。

+0

有你在休眠閱讀分離疑問? – Godwin

回答

1

從我能理解你的查詢,這將是一些接近:

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(HERSTELLUNGSVARIANTE.class) 
    .createAlias("propertyToT3", "t3") 
    .createAlias("t3.propertyToT4", "t4") 
    .add(Restrictions.eq("t3.LSZ_ID", 204)) 
    .setProjection(Projections.property("HV_ID")); 
session.createCriteria(HV_LMA_VI.class) 
    .add(Property.forName("HV_ID").in(detachedCriteria)) 
    .list();