Добавьте сущность 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.Вы также можете приукрасить сущность датой, которую нужно сохранить при чтении записи, или счетчиком, чтобы вы могли отслеживать их самые популярные посты или что-то подобное.