【发布时间】:2014-11-03 23:14:58
【问题描述】:
所以,简而言之:是否可以在 Spring Data JPA(可能是 @Query-Annotated)Repository-Methods 中将参数设置为“默认:全部”或更一般地设置为默认特定值?
我是aware,可以在(Rest)控制器中设置默认值,我只是好奇是否也可以在存储库级别进行设置。我认为这可能是一个不错的功能,因为“给我一些过滤的结果集,其中过滤器可能没有通过休息调用在前端设置”是一个非常常见的用例。
示例查询:
@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);
因此,假设未设置街道,存储库应使用“%”返回其他条件匹配但街道不相关的所有结果。
【问题讨论】:
-
恕我直言,那会变得一团糟。相反,您可能最好使用构造动态查询的
Specification(这就是您基本上想要的)。另见spring.io/blog/2011/04/26/… -
您可能还想查看参考指南 -> docs.spring.io/spring-data/jpa/docs/current/reference/html/…
-
听起来像是一个可行的解决方案,到目前为止谢谢 :) 我只是想到了特别常见的用例“如果没有定义值,则回退以选择所有内容”,会有一种“更简单的方法来做这个”。在这里有一些简单的东西会很棒,考虑其他具有过滤器值列表的查询,例如
where e.group IN ?3(您不能在此处使用“%”)。但是,到目前为止,谢谢。如果需要,请根据您的评论创建答案。我仍然会等待其他答案,但如前所述,它是一个可行的解决方案:-)
标签: java spring orm spring-data-jpa