【发布时间】:2014-11-04 14:41:59
【问题描述】:
是否可以允许查询方法@Params 是可选的,特别是在 Spring Data REST 的情况下?
例如,我想将非常相似的搜索绑定到相同的资源路径。现在要做到这一点,我需要以下内容:
@RestResource(path = "driver", rel = "byDriver")
List<Bar> findByDriverId(@Param("id") String id, Pageable pageable);
@RestResource(path = "driverAndSpan", rel = "byDriverAndSpan")
List<Bar> findByDriverIdAndStartTimeGreaterThanEqualAndEndTimeLessThanEqual(@Param("id") String id, @Param("start") Date start,
@Param("end") Date end, Pageable pageable);
这给了我:
byDriver: {
href: "http://localhost:8080/foo/search/driver{?id,page,size,sort}",
},
byDriverAndSpan: {
href: "http://localhost:8080/foo/search/driverAndSpan{?id,start,end,page,size,sort}",
}
我想要是能够看到类似于以下路径的内容,其中start 和end 是可选参数,而不是在我的存储库中定义多个方法。
byDriverAndSpan: {
href: "http://localhost:8080/foo/search/driverAndSpan{?id,*start,*end,page,size,sort}",
}
可能看起来像:
@RestResource(path = "driverAndSpan", rel = "byDriverAndSpan")
List<Bar> findByDriverIdAndStartTimeGreaterThanEqualAndEndTimeLessThanEqual(@Param("id") String id, @Param(value = "start", optional = true) Date start,
@Param(value = "end", optional = true) Date end, Pageable pageable);
【问题讨论】:
-
挖出一篇旧帖子......我很惊讶没有人提到Querydsl,这正是你可以使用的。
标签: java spring spring-data spring-data-rest