2011-11-18 53 views
1

我有一個簡單的Web應用程序,它有兩個持久類,User和Post,都由Hibernate管理。我希望用戶能夠列出他還沒有閱讀的帖子。我如何使用Hibernate實現這個功能?從數據庫中檢索未讀文章

回答

2

添加包含用戶和後

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

我敢肯定有一個更友好的表現比查詢一個not in實體UserPost,但你得到的要點。

另一個選擇是添加一個帖子的集合給用戶,並給它一個懶惰的獲取類型,但我假設集合可能會變大,並且僅爲查詢添加關聯對我來說似乎並不好。

爲連接表添加一個單獨的實體將使您不會從用戶直接關聯到帖子,反之亦然。當用戶閱讀帖子時,您將記錄添加到UserPost表。您還可以在實體閱讀條目時修改日期以存儲日期,或計數以便跟蹤其最受歡迎的帖子或任何內容。

+0

非常感謝Joel。我正在考慮類似的選擇,但我不確定實施細節。 – NewlessClubie