2012-08-10 77 views
0

我試圖通過製作一個毫無意義的應用程序,讓我的本地酒吧列表中的用戶可以標記訪問或不是,所以基本上是一個花哨的打勾清單來教自己休眠。如何基於jpa/hibernate中的連接表建立條件?

如果我正在寫這與原始的sql我有一個酒吧的表,一個用戶的表和一個連接表從另外兩個表的鏈接id爲一個酒吧已被標記爲特定用戶訪問。

查詢我會使用與指定用戶的訪問狀態,以獲取完整的名單將是這樣的(從Postgres)

SELECT *, (CASE WHEN up.id IS null THEN 0 ELSE 1 END) AS visited 
FROM pubs p 
LEFT JOIN users_pub up ON p.id = up.pubId 

我試圖找出如何去註釋我的模型類來獲取這個被訪問的屬性。想法?

對於初學者來說,hibernate文檔可能相當笨拙,所以即使在正確的方向上輕推也不勝感激。非常感謝。

回答

0

對此進行建模的最簡單方法是User類,其@ManytoMany集合爲Pub,因此您可以讀取用戶並獲取他們訪問過的酒館的集合。

那麼這將是很容易的實現方法上的用戶,如:

hasVisitedPub(id) 

返回true,如果該酒吧是他們pubsVisited集合。

使用Map<id, Pub>如果你想對誰訪問過大量酒吧的人查找更有效,因爲他們應該:-)