【发布时间】:2020-06-24 12:07:15
【问题描述】:
我正在使用 GraphQL-java 和 Hibernate 和 MariaDB 进行项目。 在我当前的解决方案中,我得到了 18938 个结果。我只想看看最后10个。所以我正在寻找一种解决方案来限制结果的数量。
在互联网上,我看到了限制结果数量的示例 (https://graphql.org/learn/pagination/)。他们称之为分页。但是,我找不到这个的服务器实现。有任何人对此有经验吗?
我有一个实体类,有一些属性:Test.java
@Entity
@Table(name = "test")
public class Test {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Size(max = 64)
@Column(nullable = false)
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent")
private Test parent;
public Test() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Test getParent() {
return parent;
}
public void setParent(Test parent) {
this.parent = parent;
}
我的存储库类:TestRepository.java
public interface TestRepository extends CrudRepository<Test, Integer> {}
我的 GraphQL 解析器类:Query.java
@Component
public class Query implements GraphQLQueryResolver {
private TestRepository testRepository;
@Autowired
public Query(TestRepository testRepository) {
this.testRepository = testRepository;
}
public Iterable<Test> findAllTests(Integer first) {
return testRepository.findAll();
}
public long countTests() {
return testRepository.count();
}
}
我的 GraphQL 架构:test.graphqls
type Test {
id: ID!
name: String!
parent: Test
}
#extend query
type Query {
findAllTests(first: Int): [Test]!
countTests: Int!
}
【问题讨论】:
-
感谢您的回复。我也找到了那些文章。但我不知道如何在查询中使用它们。他们有不同的方法,我没有..
-
好吧,我猜你可以在
TestRepository中添加带有两个参数skip和limit的方法,然后在the query 中使用它们来返回结果。 -
我是新手,我只知道如何将它们添加到 graphQL 解析器中。但我不知道如何在查询中使用它们并修改查询。所以这就是为什么我有这个问题..
-
你可以找到一些例子here。由于您没有特定的问题,因此很难在 SO 上找到答案。您可以做的只是为您的子问题搜索解决方案,例如如何在 spring data 中编写查询 或 graphql-java 分页,并应用试错法。这是最好的学习方式。
标签: java hibernate filter pagination graphql