【发布时间】:2017-11-23 03:20:02
【问题描述】:
使用spring data jpa在spring boot中创建搜索功能的最佳实践是什么?
@GetMapping("/search")
public List<Hotel> getAllByCriteria(@RequestParam MultiValueMap<String, String> criteria) {
if (criteria.containsKey("cityPublicId")) {
String cityPublicId = criteria.getFirst("cityPublicId");
if (criteria.containsKey("amenity")) {
List<String> amenities = criteria.get("amenity");
return svc.findAllByCityAndAmenities(cityPublicId, amenities);
}
return svc.findAllByCity(cityPublicId);
}
//currently only support one amenity filtration
else if (criteria.containsKey("amenity")) {
return svc.findAllByAmenities(criteria.get("amenity"));
}
return null;
}
目前我必须确定所有可能的标准组合才能使用相应的方法,是否有一种通用的方法来处理所有条件?或者至少不对所有可能的组合进行硬编码。
PS:如果我想通过多个设施过滤结果,我可以使用 findByAmenitiesContains(set) 吗?酒店实体拥有一套便利设施。我必须使用@query 创建自定义查询吗?
谢谢。
【问题讨论】:
标签: java spring spring-mvc spring-data-jpa