Хранилище данных Spring: «Содержит» для коллекций - PullRequest
0 голосов
/ 12 февраля 2019

Я ищу метод Spring Data для извлечения сущности путем проверки, содержит ли свойство (набор) элемент.Вот пример:

Сущность User:

  • Long id
  • Set<Location> местоположений

Репозиторий данных Springдля User:

Set<User> findAllByLocationsContaining(Location location);

Вышеупомянутый пример работает, но он не задокументирован в документации.Is документируется только для сравнения строк с LIKE.Есть ли рекомендуемый способ создания запроса в этом сценарии?(см. документацию )


РЕДАКТИРОВАТЬ: В качестве временного решения я использую в то же время следующий пользовательский запрос:

@Query("SELECT u FROM User u LEFT JOIN u.locations l WHERE :location IN l")
public Set<User> findAllByLocationsContaining(@Param("location") Location location);

1 Ответ

0 голосов
/ 12 февраля 2019

Почему бы не использовать просто Equals, поскольку вы ищете набор, содержащий определенный экземпляр:

Set<User> findAllByLocationsEquals(Location location);

или

Set<User> findAllByLocationsIdEquals(Integer locationId);
...