Я хочу написать запрос, который выбирает все строки по заданной коллекции типов для моего 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в качестве базы данных.