gpt4 book ai didi

java - 使用 spring-data-rest 定义路径为 "/{resourcename}/search/"的自定义方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:06 24 4
gpt4 key购买 nike

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

最佳答案

  • Spring Data REST 框架基于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);
    }

关于java - 使用 spring-data-rest 定义路径为 "/{resourcename}/search/"的自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23340321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com