2012-08-10 67 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>如果你想对谁访问过大量酒吧的人查找更有效,因为他们应该:-)