Запрос с оператором join и in, возвращающий только значения внутри предложения in - PullRequest
1 голос
/ 05 июня 2019

У меня есть таблица с именем items, и она соединена с таблицей с именем tags. Я хотел бы иметь возможность искать любые элементы, которые содержат список указанных тегов. То, что у меня есть, работает, но оно будет возвращать только теги, перечисленные в запросе, даже если элемент имеет больше связанных тегов. Я хотел бы вернуть элемент со всеми связанными тегами, если у него есть набор тегов, которые я ищу

  @Query("select d from DataItem d left join fetch d.tags t where t in (:tags)" )
  Set<DataItem> findDistinctByTags(@Param("tags") Set<Tag> tags);

Если у меня есть элемент с тегами foo и bar, и я выполняю поиск элементов с тегом foo, я верну правильный элемент, но он вернется только с тегом foo. Я бы хотел вернуть тег bar вместе с запросом.

1 Ответ

1 голос
/ 05 июня 2019

Попробуйте следующее утверждение:

@Query("select d from DataItem d left join fetch d.tags t where d.tags in (:tags)" )

Хорошим подходом также было бы включить SQL ведение журнала для вашего весеннего приложения, например, с помощью spring.jpa.show-sql=true и проверить сгенерированныйзапрос.Это поможет вам с устранением неполадок.

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