Hibernate 限制级联获取实体的大小/JPA
考虑到SpringBoot、MySQL、SpringData/JPA和Jackson的应用程序堆栈 我正在尝试实现一种限制动态获取实体大小的方法。在简化模式中,假设我们有一篇包含多条注释的文章,但是为了快速预览,我只想在文章中获取前10条注释 我会调用SpringData存储库来加载ID为10的帖子,但jackson序列化程序会循环遍历所有评论,并构建一个潜在的巨大输出 我找到的最简单的方法是告诉jackson将该字段Hibernate 限制级联获取实体的大小/JPA,hibernate,spring-boot,jackson,spring-data-jpa,Hibernate,Spring Boot,Jackson,Spring Data Jpa,考虑到SpringBoot、MySQL、SpringData/JPA和Jackson的应用程序堆栈 我正在尝试实现一种限制动态获取实体大小的方法。在简化模式中,假设我们有一篇包含多条注释的文章,但是为了快速预览,我只想在文章中获取前10条注释 我会调用SpringData存储库来加载ID为10的帖子,但jackson序列化程序会循环遍历所有评论,并构建一个潜在的巨大输出 我找到的最简单的方法是告诉jackson将该字段@JsonIgnore,然后在服务上获取前10条注释,并将它们附加到标记为tr
@JsonIgnore
,然后在服务上获取前10条注释,并将它们附加到标记为transient的单独字段上的实体
@JsonView(Views.Detailed.class)
@JsonProperty("comments")
@OneToMany(
mappedBy = "comment",
fetch = FetchType.LAZY
)
@OrderBy("created_at DESC")
@Limit(10) // This is the kind of annotation I'm looking for
List<Comment> comments = new ArrayList<>();
@JsonView(Views.Detailed.class)
@JsonProperty(“注释”)
@独身癖(
mappedBy=“comment”,
fetch=FetchType.LAZY
)
@订购人(“在描述时创建”)
@限制(10)//这就是我要找的注释类型
列表注释=新建ArrayList();
我知道我可以创建一个Getter来实现返回子列表的逻辑,但是在这种情况下,整个列表都会被获取,对吗
在Jackson方面,我可以尝试使用自定义映射器或注释来限制序列化的深度和长度(这会更好更干净),但我没有找到任何方法来实现它 限制
您只能使用limit获取10条记录
@Query(value="select * from user limit 10",nativeQuery=true)
可分页
findById(@Param("userId") String userId, Pageable pageable);
Pageable topTen = new PageRequest(0, 10);
findById(userId , topTen);
你不能那样做。您当前的单独查询方法正是您所需要的。请尝试使用PagingAndSortingRepositor,或者如果您使用Hibernate,则可以尝试在实体上使用@Filter注释