程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring Data Rest可分页子集合大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring Data Rest可分页子集合?

开发过程中遇到Spring Data Rest可分页子集合的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring Data Rest可分页子集合的解决方法建议,希望对你解决Spring Data Rest可分页子集合有所启发或帮助;

我认为SDR不直接支持您描述的方法。

您可能会采取另一种方法。而不是使用之间的双向关系,Person并且Changeset,使其从单向的ChangesetPerson。然后在您ChangesetRepository的方法中包含以下内容:

@Restresource(path = "find-by-person")
Page<Changeset> findByPerson(@Param("person") Person person, Pageable pageablE);

(我只是从内存中这样做,因此您可能需要进行一些小的调整。)

从设计的角度来看,我认为这反而是更强的,因为我认为一个人的变更集在有限的上下文中是相关的。查询变更集可能比将其与人员捆绑在一起更为合适。

解决方法

我有一个@Entity叫做User。它具有一组变更集,如下所示:

@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy="user")
private Set<Changeset> changesets = new HashSet<Changeset>();

我有一个用户库:

@Repository
@Restresource(path = "users",rel = "users")
public interface UserRepository extends JpaRepository<User,Long>{ }

和一个ChangesetRepository:

@Repository
@Restresource(path = "changesets",rel = "changesets")
public interface ChangesetRepository extends JpaRepository<Changeset,Long> { }

调用GET
http://localhost:8080/changesets/http://localhost:8080/users/产生分页响应。

如果我调用GET,http://localhost:8080/users/1/changesets那么我将所有结果存储在一个数组中,并且不会发生分页。

有没有办法向Spring Data
Rest指示我想通过其父User访问它时以一种可分页的方式返回变更集集​​合?变更集集将快速增长,我宁愿不要在单个页面中返回大量结果。

编辑:

如Willie Wheeler的建议,我将其添加到ChangesetRepository以使其可搜索:

@Restresource(path = "byUser",rel = "byUser")
public Page<Changeset> findByUser(@Param("id") User user,Pageable p);

我离开了双向关系,但也可以通过使@Restresource(exported=falsE)变更集集来向用户隐藏指向变更集的链接。

注意:似乎将关系设置为export = false会隐藏链接,但实际上并不会删除映射。/ users / 1 / changesets不会发布,但仍然有效。

大佬总结

以上是大佬教程为你收集整理的Spring Data Rest可分页子集合全部内容,希望文章能够帮你解决Spring Data Rest可分页子集合所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。