Hibernate получить список по условию, иначе вернуть все сущности в списке
Пусть есть сущность User:(для простоты имеет 2 поля)
@Entity
@Builder
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(nullable = false)
private String name;
Есть слой репозитория:
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
Optional<User> findUserByName(String userName);
List<User> findUserByNameContaining(String fragment);
Имеется контроллер, с двумя эндпоинтами:
@GetMapping("/all")
public List<User>getAllUsers(){
return userService.findAll();
}
@GetMapping("/all{nameFragment}")
public List<User>getAllUsers( @PathVariable(name = "nameFragment") String nameFragment){
return userService.findUserByNameContaining(nameFragment);
}
Могу ли я как нибудь объединить два этих эндпоинта в один в метод
@GetMapping("/all{nameFragment}")
public List<User>getAllUsers( @PathVariable(name = "nameFragment") String nameFragment){
return userService.findUserByNameContaining(nameFragment);
}
И в зависимости от того, передал ли я аргумент nameFragment
или нет, будет выполнять поиск либо пользователя, содержащего в себе часть nameFragment
или в случае, если nameFragment=null
будет выводиться все пользователи
т.е можно ли создать примерно такой метод в репозитории:
findUserByNameContainingElseFindAll(String nameFragment)
Или данную логику поведения нужно отдельно обрабатывать в сервисном слое ?