Spring Data JPA Repositories:是否可以给params一个默认的Value / default all?

时间:2014-09-10 10:32:59

标签: java spring orm spring-data-jpa

因此,简而言之:是否可以将参数设置为"默认值:全部"或更一般地说,在Spring Data JPA(可能是@ Query-Annotated)存储库方法中的默认特定值?

aware可以在(Rest)控制器中设置默认值,我只是好奇它是否可以在存储库中执行此操作 - 也是。我认为可能是一个很好的功能,对于"给我一些过滤的resultSet,其中过滤器可能没有在前端设置过休息调用"是一个非常常见的用例。

实施例的查询:

@Query("select new com.my.dto(e.name, e.age, e.address)" +
        " from Entity e" +
        "where e.name like ?1 " +
        "and e.age like ?2  " +
        "and e.street like ?3")
List<Item> findItemsFiltered(String name, String age, String street);

所以当我们说没有设置街道时,存储库应该使用&#34;%&#34;返回其他标准匹配但街道不相关的所有结果。

1 个答案:

答案 0 :(得分:0)

如何在@Query本身进行此操作? 类似的东西:

@Query("select new com.my.dto(e.name, e.age, e.address)" +
    " from Entity e" +
    "where e.name like ?1 " +
    "and e.age like ?2  " +
    "and e.street like (CASE WHEN ?3 IS NULL THEN '%' ELSE ?3 END)")
List<Item> findItemsFiltered(String name, String age, String street);

另一种方法是拥有一个自定义参数注释,如@Default,但这需要自定义我相信的存储库实现。

另一个替代方案是M. Deinum提到的Specification