2014-02-26 214 views
0

請幫幫我:標準(NOT IN)

我旁邊表:

單位

  • ID

用戶

  • ID

  • UNIT_ID
  • USER_ID

我不知道如何創建C的正確結構從SQL riteria:

代碼:

SELECT * FROM Unit WHERE id not in (SELECT unit_id FROM Rate WHERE user_id = 55); 

我看到this答案。但我不明白如何使條件鏈接到另一個表(實體)。

+0

回答有關標準的API,而不是HQL。切換到標準api。從'session.createCriteria(Unit.class)'開始 – Antoniossss

回答

1

尋找yor標籤我認爲你需要你的SQL查詢的Criteria視圖;所以假設UnitRate類:您所提供

// This is the subquery 
DetachedCriteria subquery = DetachedCriteria.forClass(Rate.class) 
    .add(Restrictions.eq("user_id", 55)) 
    .setProjection(Projections.id()) 

// This corresponds to (SELECT * FROM Unit WHERE id not in (subquery)) 
Criteria criteria = session 
    .createCriteria(Unit.class) 
    .add(Subqueries.notIn("id", subquery)); 
0

我不知道IN在這種情況下是最合適的。嘗試一個內部連接來連接表格:

SELECT * FROM Unit INNER JOIN Rate ON Rate.unit_id = Unit.id 
    WHERE Rate.user_id = 55