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
。