Сделать запрос в базе данных, который вернет все записи, имеющие хотя бы один тег из списка

У меня есть сущность Post в которой одно из полей - список тегов (как теги у поста в социальной сети):

@ElementCollection
    @CollectionTable(
            name = "posts_tags",
            joinColumns = @JoinColumn(name = "post_id", referencedColumnName = "id"))
    @Column(name = "tag", nullable = false)
    private List<String> tags = new ArrayList<>();

При запуске Spring Boot проекта Hibernate выводит следующие логи:

Hibernate: create table posts (id  bigserial not null, text varchar(255) not null, title 
varchar(255) not null, user_id int8 not null, primary key (id))
Hibernate: create table posts_tags (post_id int8 not null, tag varchar(255) not null)
Hibernate: alter table posts_tags add constraint FKcreclgob71ibo58gsm6l5wp6 foreign key 
(post_id) references posts

Сущности Тег в проекте нет, получается создается связанная таблица с тегами по отношению "один ко многим".

Пользователь делает запрос с передачей списка желаемых тегов, нужно вернуть все посты, в которых хотя бы один тег будет совпадать с тегами из переданного списка. Реализовать запрос к базе данных нужно в репозитории расширяющем JpaRepository. Используемая БД - PosgreSQL. Как пишется подобный запрос? Может быть есть имя метода в JpaRepository<> по которому Spring сгенерирует такой запрос?


Ответы (0 шт):