Пожалуйста, предложите индивидуальный поиск или запрос - PullRequest
0 голосов
/ 21 февраля 2020

Мне нужно выполнить поиск по нескольким параметрам, но если некоторые из них null, не учитывайте их при поиске. Например, я хочу найти человека, который находится в США и работает в Google, но теперь мой поиск реализован таким образом, что есть все, кто сейчас находится в США или кто в настоящее время работает в Google. И если я использую и вместо или, поля будут искать с null.

Теперь мой поиск выглядит следующим образом и получает набор на входе - из которого возникает второй вопрос. Как я могу сравнить этот набор с таблицей OneToMany этого объекта?

Long<Game> findByGameTitleOrGameTypeOrGameLocations(String title, String type, Set<String> locations);

Это набор местоположений объекта:

@ElementCollection
private Set<String> gameLocations;

Эти вопросы могут кому-то кажется глупым xD Но я новичок ie.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020
why cant you go with preparing the query as below.
@Query(value = "select * from game ga where ga.tile=:#{#title}  and ga.type=:#{#type} and ga.location in (:#{#locationList})", nativeQuery = true)
    Object[] findByGameTitleOrGameTypeOrGameLocations(@Param("title") String title,@Param("type") String type,@Param("location") List<String> locationList);
0 голосов
/ 21 февраля 2020

Я могу предложить пользовательские запросы по аннотации @Query. Я не уверен, что это оптимальный путь, но он работает.

@Query("SELECT g FROM Game g" +
    " WHERE (:title is null or g.title = :title)" +
    " AND (:type is null or g.type = :type)" +
    " AND (:locations is null or g.locations in :locations)")
Long<Game> findByGameTitleOrGameTypeOrGameLocations(
    @Param("title") String title,
    @Param("type") String type,
    @Param("locations") Set<String> locations);

Это пример запроса, потому что я точно не знаю вашу модель БД.

...