2011-12-13 37 views
0

我有一個表X:ID,姓名
我有一個表Y:ID,姓名,X_ID
我有一個表Z:身份證,Y_id查詢三個表用一個id投影

哪有我執行標準查詢或HQL查詢,該查詢將返回鏈接到X對象的所有Z對象ID。

(在我的情況下,X是一個對話空間,Y是對話,和Z是類別)

HBM:

談話對象具有用於類別下面的映射:

<set name="allCatIdSet" table="CATEGORIES" lazy="true"> 
     <cache usage="read-write" /> 
     <key> 
     <column name="ITEM_ID" index="MY INDEX"/> 
     </key> 
     <element type="string"> 
     <column name="VALUE" length="64" index="MY INDEX"/> 
     </element>  
</set> 

以及對話空間的外鍵id:

<property name="conversationSpaceId" length="64" index="CONVSPACEINDEX"/> 
+1

這些實體之間有什麼關聯?你有什麼嘗試?這是非常基本的。 –

+0

我添加了一些hbm的相關信息 –

回答

1

Shor牛逼的問題,答案很簡單:

public List<Z> findZbyX(X x) { 
    // query Z objects 
    String hql = "FROM Z z WHERE z.y.x = :x" 
    Query query = sessionFactory.getCurrentSession().createQuery(hql); 
    query.setParameter("x", x); 
    return query.list(); 
} 

這將返回ž對象的列表,如果你真的只需要ZS的ID列表改變你的HQL到SELECT z.id FROM Z z WHERE z.y.x = :x