2010-08-18 79 views
0

我有一個用戶表,它包含兩種不同類型的用戶(A和B)。 A型用戶可以與B型用戶建立關係(記錄在關係表中)。類型A用戶可以與類型B用戶關係的數量記錄在另一個表中的字段中。使用Hibernate根據另一個表中的記錄數來提取記錄

我想讓Hibernate返回所有沒有建立完全關係的A型用戶。我有一個SQL查詢,將做到這一點。我需要做什麼?

編輯

我已經設法通過投擲我查詢到執行Session.createSQLQuery()得到這個工作,但它似乎不可思議有SQL塊在這一切之中非常棒的休眠代碼。我認爲,如果可能的話,應該在HSQL或Hibernate對象中使用它。

這是我試圖轉換爲HSQL僞查詢:

select userId 
from (
    select user_id, max_mentees, count(connection_id) num_mentees 
    from user_table 
    join mentor on mentor_id = user_id and user_status = 'ACTIVE' 
    left join connections on connection_mentor_id = mentor_id 
    and connection_status = 'ACTIVE' and connection_end > sysdate 
    group by user_id, max_mentees, connection_id 
) 
where (max_mentees > num_mentees) 
group by user_id 
+0

'我想讓Hibernate返回所有未建立完全關係的A型用戶何時?什麼時候做? – 2010-08-18 22:23:12

+0

基本上,A用戶將成爲B用戶的導師,A用戶每次可以擁有多少「受指導者」。計數是查看有多少B(受指導者)用戶分配給A(指導者)用戶,以便我們可以將其與另一個表中的限制數進行比較。 – 2010-08-19 12:43:28

回答

0

假設你有,有一個人跟一個MentorRelationship類多關係的導師類,你會做這樣的事情:

session.createQuery("from Mentor mentor where mentor.menteeRelationships.size < mentor.menteeRelationships.maxNumberOfRelationships") 
0

我想有休眠返回所有做A類用戶沒有建立所有的關係。我有一個SQL查詢,將做到這一點。我需要做什麼?

說實話,你的問題還是很清楚(至少我),沒有看到SQL,沒有看到你的對象模型和映射,似乎很難做到準確,我的建議是要麼:

如果您希望更詳細的解答,您應該IMO提供更多的細節。

+0

我用我試圖重現的查詢更新了我的問題。 – 2010-08-26 11:58:11

相關問題