从数据库中检索未读帖子

时间:2011-11-18 20:50:31

标签: database hibernate database-design web-applications

我有一个简单的Web应用程序,它有两个持久类,User和Post,都由Hibernate管理。我希望用户能够列出他尚未阅读的帖子。如何使用Hibernate实现此功能?

1 个答案:

答案 0 :(得分:2)

添加包含用户和帖子的UserPost实体

Select p from Post p where p not in ( select up.post from UserPost up where up.user.id = :userId )

我确信有一个比not in更具性能友好性的查询,但你得到了要点。

另一种选择是向用户添加一组Posts并给它一个懒惰的fetch类型,但我假设该集合可能会变大,并且仅为查询添加关联对我来说似乎不太好。< / p>

为连接表添加单独的实体将使您无法从用户到帖子直接关联,反之亦然。当用户阅读帖子时,您将向UserPost表添加记录。您还可以在阅读条目时为实体添加日期以进行存储,或者计数以便您可以跟踪其最受欢迎的帖子或其他内容。