Это может быть реализовано с использованием спецификации (org.springframework.data.jpa.domain.Specification);
Сначала добавьте новую сигнатуру метода в свой репозиторий пользователя
Page<User> findAll(Specification<User> where, Pageable pageable);
Затем в васUserService добавить спецификацию:
static Specification<User> isNotAdmin(Authority role) {
return (obj, cq, cb) -> cb.isNotMember(role, obj.get("authorities"));
}
Затем измените свой метод для фильтрации по роли, которую вы хотите исключить:
@Transactional(readOnly = true)
public Page<UserDTO> getAllManagedUsers(Pageable pageable) {
Authority admin = authorityRepository.findById(AuthoritiesConstants.ADMIN).get();
return userRepository.findAll(Specification.where(isNotAdmin(admin)), pageable).map(UserDTO::new);
}