问题描述
我在数据库中有一个名称为Plan的计划
“新计划”,但是每次我使用参数“新”查询时,都不会得到结果。 (由于我正在使用like
,因此应该返回)
我如何构建规范有问题吗? 谢谢
规格:
public Specification<Plan> hasOptionalName(String name) {
return (root,query,criteriaBuilder) -> name == null ?
criteriaBuilder.conjunction() :
criteriaBuilder.like(root.get("name"),name);
}
public Specification<Plan> buildSpecification(Long id,String name,PlanStatus status) {
return planSpecification.withId(id)
.and(planSpecification.withStatus(status))
.and(planSpecification.hasOptionalName(name));
}
但是结果不会返回“新计划”,但是当我删除过滤器时,它将返回。
解决方法
criteriaBuilder.like()
确实为您放置了%
,因此您正在做的事情是寻找一个名为New
(实际上就是这种情况)的计划,您应该添加{{ 1}}在您要查找的字符串上,类似这样:
%
带有criteriaBuilder的赞示例:https://api.mapbox.com/downloads/v2/mobile-maps/releases/ios/packages/6.1.0/mapbox-ios-sdk-dynamic.zip