Spring Data Rest - 具有默认值的参数

Chr*_*Geo 6 java spring spring-data-rest

我创建了以下@RepositoryRestResource查询,我想为其余的api创建动态查询.所以基本上我想做的事情如下:

myHost/myApp/data/search/all?name=me&age=20&address=myhome&etc=etc
Run Code Online (Sandbox Code Playgroud)

所以我在下面创建了查询:

   @Query("Select t from Data t " +
            "where " +
            "t.name like :name AND " +
            "t.age = :age AND " +
            "t.address = :address AND " +
            "t.etc= :etc"
    @RestResource(path = "all", rel = "all")
    Page findByAll(@Param("name") String name, @Param("age") String age,
            @Param("address") String address, @Param("etc") String etc, Page page);
Run Code Online (Sandbox Code Playgroud)

显然其中一些可能尚未输入.有没有办法在存储库中定义默认值?所以例如我想要name一个默认值%.

我不完全确定这种方法对于我想要做的是正确的,所以欢迎任何替代建议.

小智 7

我知道这是旧的,但我遇到了类似的问题并解决了如下问题:

@Query("Select t from Data t " +
        "where " +
        "(:name IS NULL or t.name like :name) AND " +
        "(:age IS NULL or t.age = :age) AND " +
        "(:address IS NULL or t.address = :address) AND " +
        "(:etc IS NULL or t.etc= :etc)")
@RestResource(path = "all", rel = "all")
Page findByAll(@Param("name") String name, @Param("age") String age,
        @Param("address") String address, @Param("etc") String etc, Page page);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,使用此技术不能将原始数据类型用于参数,而是使用其包装器对象反向部分.例如:`Integer`而不是`int` (2认同)