我很困惑。我无法找到如何将自定义“搜索”方法与在 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”进行定义(存储库方法+(方法SERVICES OR 规格)
- Spring Data REST框架基于Spring Data Repository,因此这里可以忽略您的服务类。
- 如果您使用 @Param 注释来注释所有参数,那么所有不属于 CRUD/Paging Repository 的方法都会作为“搜索”方法公开。因此,在您的情况下,您需要按照以下方式实现您的方法Spring Data commons 文档中的约定概述 http://docs.spring.io/spring-data/data-commons/docs/1.8.x/reference/html/repositories.html#repositories.custom-implementations。所以一旦你实现了
findByNameLike
方法,该方法将公开为../search/findByNameLike
网址。如果需要,您可以使用以下命令自定义 rel 和路径@RestResource
注解。
-
另请注意您的UserRepository
理想情况下应该只致力于User
对象以及您定义的方法。就你而言,UserRepository
正在返回Process
/ProcessContext
物体?相反,它应该像下面这样
public interface UserRepository extends PagingAndSortingRepository<User, Long>{
Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)