Я хочу написать запрос, который выбирает все строки по заданной коллекции типов для моего 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: // локальный: 8080 / api / myFiles / search / findByFileType"
и возвращает все файлы с типом "1" при поиске с одним параметром: «http: // локальный: 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);
Он по-прежнему работает для примеров ссылок localhost, которые я привел выше, но несколько параметров выдают ошибку «java.sql.SQLSyntaxErrorException: ORA-00920: недопустимый оператор отношения» с этой ссылкой: «http: // локальный: 8080 / api / myFiles / search / findByFileType? fileType = 1,2»
Обновлено: я использую Oracle11g в качестве базы данных.




так что такое SQL ???? в журнале выбранного вами провайдера JPA. Вы не можете надеяться отладить такие вещи, не глядя на то, что они делают.