Получить непрочитанные сообщения из базы данных - PullRequest
1 голос
/ 19 ноября 2011

У меня есть простое веб-приложение с двумя постоянными классами, User и Post, управляемыми Hibernate. Я бы хотел, чтобы пользователь мог перечислять сообщения, которые он еще не читал. Как я могу реализовать эту функцию, используя Hibernate?

1 Ответ

2 голосов
/ 19 ноября 2011

Добавьте сущность UserPost, которая содержит пользователя и сообщение

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

Я уверен, что запрос с более высокой производительностью более удобен, чем not in, но вы получаете суть.

Другим вариантом является добавление коллекции сообщений пользователю и предоставление ей ленивого типа выборки, но я предполагаю, что коллекция, скорее всего, станет большой, и добавление ассоциации просто для запроса не кажется хорошим дляme.

Добавление отдельной сущности для таблицы соединений не позволит вам напрямую связать пользователя с почтой или наоборот.Когда пользователь читает сообщение, вы добавляете запись в таблицу UserPost.Вы также можете приукрасить сущность датой, которую нужно сохранить при чтении записи, или счетчиком, чтобы вы могли отслеживать их самые популярные посты или что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...