如何基于jpa / hibernate中的连接表对条件进行建模?

时间:2012-08-10 20:57:20

标签: hibernate jpa

我正在尝试通过创建一个无意义的应用程序来教自己休眠,该应用程序包含我的本地酒吧列表,用户可以标记访问过的标记,所以基本上是一个花哨的标记列表。

如果我用原始sql编写这个,我会有一个pubs表,一个用户表和一个连接表来连接其他两个表中的id,因为一个pub已被标记为特定用户访问过。

我用来获取指定用户的访问状态的完整列表的查询将是这样的(在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文档可能非常笨拙,所以即使是正确方向的推动也会受到赞赏。非常感谢。

1 个答案:

答案 0 :(得分:0)

对此进行建模的最简单方法是User类,其@ManytoMany集合为Pub,因此您可以阅读用户并获取他们访问过的酒吧集合

然后在User上实现一个方法就好了:

hasVisitedPub(id)

如果该pub位于其pubsVisited集合中,则返回true。

如果您希望为访问过大量酒吧的用户提高查询效率,请使用Map<id, Pub>,因为他们应该: - )