3

我很困惑。我不知道如何将自定义“搜索”方法与在 spring-data-rest 的帮助下加载的方法一起定义。你能回答我,框架是否有这种“开箱即用”的可能性?如果有,你能告诉我,我在哪里可以找到它?

为了更深入地了解我的情况,我描述了我的问题:

class UserService {
    public String getListOfWaitingUsers() {

        return userRepository.findAll(UserSpecification.isWaiting());
    }
} 

public interface UserRepository extends PagingAndSortingRepository<User, Long>{
   Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
}

我希望它像:

/user/search/
        findByNameLike
        findWaitingUsers

如何实现我的规范或服务方法(存储库中没有方法)将使用路径“/resource_name/search/METHOD_NAME”定义(存储库方法+(方法服务规范

4

1 回答 1

4
  • Spring Data REST 框架基于 Spring Data Respository,因此您的服务类可以在这里忽略。
  • 所有不属于 CRUD/Paging Repository 的方法都公开为“搜索”方法,前提是您使用 @Param 注释对所有参数进行了注释。因此,在您的情况下,您需要按照Spring Data commons docs 中的约定大纲实现您的方法。因此,一旦您实现了findByNameLike方法,该方法将作为../search/findByNameLikeURL 公开。@RestResource如果需要,您可以使用注释自定义 rel 和路径。
  • 另请注意,理想情况下,您UserRepository应该只处理User对象,因此您定义的方法。在您的情况下,UserRepository是返回Process/ProcessContext对象吗?相反,它应该如下所示

    public interface UserRepository extends PagingAndSortingRepository<User, Long>{
      Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
    }
    
于 2014-04-28T15:36:22.673 回答