【发布时间】:2018-03-13 19:29:57
【问题描述】:
我有一个用于前端的基于 Angular 的应用程序和用于后端的 Spring Boot。
我的组件有一个包含类似过滤器的变量
search:any={
name:'',
surname:'',
address:'',
phone:'',
city:''
}
我用这样的 Post 方法将它传递给我的 Api:
getPeoplesByFilters(filter){
return this.http.post("http://localhost:8080/search", filter)
.map (resp => resp.json())
}
我通过这种方法在我的 Spring Boot 控制器中收到了这个:
@RequestMapping(value="/search", method= RequestMethod.POST )
public Page<People> searchFilters(@RequestBody() People p,
@RequestParam(value="page", defaultValue="0") int page ,
@RequestParam(value="size", defaultValue="5") int size){
p.setName("%"+p.getName()+"%");
p.setSurname("%"+p.getSurname()+"%");
p.setAddress("%"+p.getAddress()+"%");
p.setPhone("%"+p.getPhone()+"%");
System.out.println(p.getName());
return poepleRepository.searchFilters( p , new PageRequest(page, size));
}
在我的 Jpa Repository 界面中,我有这个查询:
@Query("select p from poeple p where p.name like :#{#x.name} and p.surname like :#{#x.surname} and p.address like :#{#x.address} and p.phone like :#{#x.phone} and p.mobile like :#{#x.phone}")
public Page<People> searchFilters(@Param("x") People x, Pageable pageable);
但我没有任何结果
我只尝试了一个字段,然后将其填充到我的前端应用程序中,它可以工作 但是,当我只填写一个字段并让另一个字段为空时,我的结果为零。
怎么了!
谢谢
【问题讨论】:
-
你确定SQL查询条件是AND而不是OR?
-
是的,我想连接过滤器
标签: java spring hibernate spring-data-jpa jpql