我正在尝试通过创建一个无意义的应用程序来教自己休眠,该应用程序包含我的本地酒吧列表,用户可以标记访问过的标记,所以基本上是一个花哨的标记列表。
如果我用原始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文档可能非常笨拙,所以即使是正确方向的推动也会受到赞赏。非常感谢。
答案 0 :(得分:0)
对此进行建模的最简单方法是User
类,其@ManytoMany
集合为Pub
,因此您可以阅读用户并获取他们访问过的酒吧集合
然后在User上实现一个方法就好了:
hasVisitedPub(id)
如果该pub位于其pubsVisited
集合中,则返回true。
如果您希望为访问过大量酒吧的用户提高查询效率,请使用Map<id, Pub>
,因为他们应该: - )