jpa-запрос данных весны выбирает все строки, если заданный набор параметров равен нулю - PullRequest
0 голосов
/ 30 мая 2018

Я хочу написать запрос, который выбирает все строки по заданной коллекции типов для моего fileRepository (есть 3 типа как «1», «2» и «3»), если этот параметр не задан из внешнего интерфейса, то ондолжен вернуть все строки.

Я использую репозиторий с аннотацией @RepositoryRestResource для достижения этой цели.Он отлично работает для запроса одного типа (не для коллекции)

@Query("SELECT t FROM #{#entityName} t WHERE :fileType IS NULL OR t.fileType = :fileType")
Page<MyFile> findByFileType(@Param("fileType") String fileType, @Param("page") Pageable pageable);

, он возвращает все сущности, когда я не даю никаких аргументов, например: "http://localhost:8080/api/myFiles/search/findByFileType"

и возвращает все файлы, которые имеютвведите «1» при поиске с 1 параметром: «http://localhost:8080/api/myFiles/search/findByFileType?fileType=1"

Но проблема возникает, когда я пытаюсь написать запрос из коллекции типов, и я попытался это

@Query("SELECT t FROM #{#entityName} t WHERE :fileTypes IS NULL OR t.fileType IN :fileTypes")
Page<MyFile> findByFileType(@Param("fileTypes") Collection<String> fileTypes, @Param("page") Pageable pageable);

Это все ещеработает с примерами локальных ссылок, которые я дал выше, но выдает несколько параметров «ошибка java.sql.SQLSyntaxErrorException: ORA-00920: недопустимый реляционный оператор» с этой ссылкой: «http://localhost:8080/api/myFiles/search/findByFileType?fileType=1,2"

Редактировать: я использую Oracle11gв качестве базы данных.

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