我有一个简单的Web应用程序,它有两个持久类,User和Post,都由Hibernate管理。我希望用户能够列出他尚未阅读的帖子。如何使用Hibernate实现此功能?
答案 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表添加记录。您还可以在阅读条目时为实体添加日期以进行存储,或者计数以便您可以跟踪其最受欢迎的帖子或其他内容。