gpt4 book ai didi

java - 自定义 JpaRepository 过滤器或查询

转载 作者:行者123 更新时间:2023-12-01 10:51:26 25 4
gpt4 key购买 nike

我使用 JpaRepository findAll() 函数获取每页的所有 Posts,限制为 10 个。但是,我想在 Interfce 中创建一个自定义函数,以仅获取 PostType 等于 2 的记录。

我的界面类:

public interface PostRepository extends JpaRepository <Post, Integer> {

}

我这样使用它:

@RequestMapping(value = "/posts", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
Page<Post> getAllPosts(@RequestParam int page) {
//int page=1;
PageRequest request =
new PageRequest(page - 1, PAGE_SIZE, Sort.Direction.DESC, "CreationDate");
return postRepository.findAll(request);
/* List<Post> list = (List<Post>) postRepository.findAll();
return new ResponseEntity<List<Post>>(list, HttpStatus.OK);*/
}

使用上面的代码,我可以获得所有帖子。我需要使用自定义 findOnlyQuestions() 来获取每页的所有问题。

(只有部分帖子是问题)

我想我在某个地方看到可以使用 @Query 注释编辑查询并像这样实现它。你觉得怎么样?

最佳答案

您实际上可以使用具有特殊名称的方法:

Page<Post> findByPostTypeEqual(Pageable pageable, int postType);

所以当你调用一个方法时,只需传递2即可。

不确定它是否会起作用(当您想限制获取的记录数量时它会起作用),但也可以尝试这样:

Page<Post> findByPostTypeEqual2(Pageable pageable);

使用 @Query 注释,您将拥有:

@Query("select p from Post p where p.postType = 2")
Page<Post> findByPostType(Pageable pageable);

关于java - 自定义 JpaRepository 过滤器或查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33858164/

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