2016-03-30 20 views
1

QueryDSL'de aşağıdaki SQL sorgusunu yeniden oluşturmaya çalışıyorum. Aşağıdaki, şu anda çalışan olarak çalışan SQL sorgum. QueryDSL alt sorgu çalışmıyor

SELECT * FROM room x WHERE unit_id = (SELECT unit_id FROM room WHERE unit_id = x.unit_id GROUP BY unit_id HAVING(SUM(sqft) > 0)) 

ben alt sorgusu öteye herhangi gelemez dürüstçe aynı şeyi yapan QueryDSL sorgusu yazmaya çalışıyorum ama var.

JPASubQuery subQuery = new JPASubQuery(); 
subQuery.from(qRoom).groupBy(qRoom.unit).having(qRoom.sqft.sum().goe(0)); 

JPAQuery unitquery = from(qRoom) 
    .where(qRoom.building.eq(building)).where(qRoom.unit.eq(subQuery)); 

return unitquery.list(qRoom); 

Yukarıdaki sorgu çalışmıyor ve QueryDSL'deki alt sorgular kullanılarak sorun yaşıyorum. Bu sorguyu çalışır hale getirmek için ne eklemeli/değiştirmeliyim?

+1

herhangi bir hata iletisi karşılaşmadan musunuz yoksa nasıl işe yaramıyor biliyoruz değiştirmek için gerekli? – jojonas

+0

@jojonas Alt sorgum bir birim nesnesini döndürmüyor, ayrıca, alt sorgumun birimi olarak 'ana' sorgumdan birimi nasıl kullanacağımı bilmiyorum. – inControl

+0

JPA kullanıyorsunuz? hangi kalıcılık çerçevesi? –

cevap

0

Düzeltildi.

Sadece .where(qRoom.unit.eq(subQuery)); çok .where(qRoom.unit.in(subQuery.list(qRuimte.unit)));