Opa pessoal, estou precisando fazer uma consulta de pesquisa com uma condição: Trazer só os Posts com status: StatusPost.LIBERADO. Eu pesquiso tanto pelo "name" da minha entidade "Post" ou pelo "address" dele
Estou fazendo assim:
Repository:
@Query("FROM Post p " +
"WHERE LOWER(p.name) like %:searchTerm% " +
"OR LOWER(p.address) like %:searchTerm% AND p.status = :statusPost")
Page<Post> search(@Param("searchTerm") String searchTerm, StatusPost statusPost, Pageable pageable);
Service:
public Page<PostDTO> search(String searchTerm, StatusPost status, int page, int size) {
PageRequest pageRequest = PageRequest.of(page, size, Sort.Direction.ASC, "name");
return repository.search(searchTerm.toLowerCase(), status, pageRequest).map(PostDTO::created);
}
Controller:
@GetMapping("/search")
public Page<PostDTO> search(@RequestParam("searchTerm") String searchTerm,
@RequestParam(value = "page", required = false, defaultValue = "0") int page,
@RequestParam(value = "size", required = false, defaultValue = "24") int size) {
return postService.search(searchTerm, StatusPost.LIBERADO, page, size);
}
A pesquisa funciona pelo name ou address certinho, mas traz todos e não filtra apenas pelos Posts com status: StatusPost.LIBERADO.
O que estou fazendo de errado? Podem me ajudar? Abraços.