【问题标题】:Defining custom methods with path "/{resourcename}/search/" using spring-data-rest使用 spring-data-rest 定义带有路径“/{resourcename}/search/”的自定义方法
【发布时间】:2014-04-28 11:50:01
【问题描述】:

我很困惑。我不知道如何将自定义“搜索”方法与在 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”定义(存储库方法 + (方法服务规格)

【问题讨论】:

    标签: java spring rest spring-data-rest


    【解决方案1】:
    • Spring Data REST framework 是基于 Spring Data Respository 的,所以这里你的服务类可以忽略。
    • 所有不属于 CRUD/Paging Repository 的方法都公开为“搜索”方法,前提是您使用 @Param 注释对所有参数进行了注释。因此,在您的情况下,您需要按照conventions outline in Spring Data commons docs 实现您的方法。因此,一旦您实现了findByNameLike 方法,该方法将公开为../search/findByNameLike URL。如果需要,您可以使用 @RestResource 注释自定义 rel 和路径。
    • 还请注意,您的 UserRepository 理想情况下应该只在 User 对象上工作,因此您定义的方法。在您的情况下,UserRepository 正在返回 Process/ProcessContext 对象?相反,它应该如下所示

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

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 2016-03-26
      • 2016-06-25
      • 2018-03-17
      • 2016-02-14
      • 2018-04-18
      • 2019-03-08
      • 2014-11-27
      • 1970-01-01
      相关资源
      最近更新 更多