spring data jpa query如果给定的参数集合为空,则选择所有行

时间:2018-05-30 19:58:20

标签: spring-boot jpa oracle11g spring-data spring-data-jpa

我想编写一个查询,按照给定的类型集合为我的fileRepository选择所有行(有3种类型为" 1"," 2"和" 3&# 34;),如果没有从前端给出该参数,那么它应该返回所有行。

我正在使用带有@RepositoryRestResource注释的Repository来实现这一点。 它适用于单一类型查询(不是集合)

@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);

当我不提出任何论据时,它会返回所有实体,例如:&#34; http://localhost:8080/api/myFiles/search/findByFileType&#34;

并返回所有类型为&#34; 1&#34;的文件当我用1参数搜索时: &#34; http://localhost:8080/api/myFiles/search/findByFileType?fileType=1&#34;

但是当我尝试从类型集合中编写查询并且我尝试了这个

时会出现问题
@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链接,但是多个参数抛出&#34; java.sql.SQLSyntaxErrorException:ORA-00920:无效的关系运算符&#34;此链接出错: &#34; http://localhost:8080/api/myFiles/search/findByFileType?fileType=1,2&#34;

编辑:我使用Oracle11g作为数据库。

0 个答案:

没有答案