#spring-boot #jpa #many-to-many #jpql
Вопрос:
В моем проекте Springboot мне нужно реализовать функцию поиска проектов. Каждый проект может содержать несколько тегов, и каждый тег может быть частью многих проектов (от многих до многих). Учитывая список тегов, мне нужно найти проект, который содержит все эти теги (акцент на ВСЕХ). Я пробовал использовать спецификацию JPA и запросы, но мне это не удается.
public class Project implements Serializable {
@ManyToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
@NotNull
@NotEmpty
@Size(min = 1, max = 5)
private List<Tag> tags;
}
У каждого тега есть имя, которое должно быть значением, используемым для их поиска. Я попытался использовать подзапросы и существующее предложение следующим образом: для каждого значения тега я делаю подзапрос, чтобы проверить, существует ли он, но я считаю, что это не работает, потому что я не указываю, что тег должен принадлежать родительскому запросу (проекту), и я не знаю, как это сделать с отношением «многие ко многим». Чтобы быть более ясным, я не могу сделать следующее:
Выберите p из проекта p, где он существует(Выберите тег Из тега, где имя=»значение» и projectId=p.id)
Любая помощь была бы полезна
Комментарии:
1. Если вы можете составить ER-диаграмму, ее легко преобразовать в сущности в JPA.