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

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

我知道在(Rest)控制器中设置默认值是可能的,我只是好奇它是否可以在Repository-Level中进行。 我认为可能是一个很好的function,因为“让我得到一些过滤结果集,其中filter可能没有在前端通过rest调用设置filter”是一个非常常见的用例。

例如查询:

@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 findItemsFiltered(String name, String age, String street); 

因此,当我们说没有设置street时,存储库应该使用“%”来返回其他条件匹配但街道不相关的所有结果。

如何在@Query本身做到这@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 findItemsFiltered(String name, String age, String street); 

另一种方法是拥有像@Default这样的自定义参数注释,但这需要自定义存储库实现本身。

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