java - 如何从 JPA 中的父实体检索子数据

标签 java mysql spring spring-boot spring-data-jpa

父实体:

 public class Post {
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Integer id;

        private String title;

        private Integer image;

        private Integer views;

        @OneToOne
        private Author author;
    }

子实体

    public class Author{
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private Integer id;

    private String name;

    private String bio;
}

现在帖子实体将包含作者的映射,我试图根据浏览次数从帖子中仅获取作者

我厌倦了下面的查询,不知道如何得到

@Query(value = "SELECT new com.demo.v1.blog.dto.AuthorDto(p.author.id,a.name,p.author.bio,p.author.image,p.author.isDeleted,p.author.status,p.author.postsNum) FROM Post p order by views DESC")
Page<AuthorDto> getAuthorsByViews(Pageable pageable);

最佳答案

    @Query(value = "SELECT new com.demo.v1.blog.dto.AuthorDto(a.id,a.name,a.bio,a.image,a.isDeleted,a.status,a.postsNum) FROM Author a INNER JOIN Post p on a.id = p.author GROUP BY p.author order by p.views DESC")
Page<AuthorDto> getAuthorsByViews(Pageable pageable);

使用公共(public) ID 连接父级和子级,并根据 View 进行排序

关于java - 如何从 JPA 中的父实体检索子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62210838/

相关文章:

java - REST API 如何接收请求正文数据?

Java程序分级

java - 使用 JPA 存储 Map<Locale,String>

php - sql查询包括哪里不更新表而不更新表?

java - 将随机端口暴露给 docker-compose.yml

java - Mac 版 Eclipse 中的 JOGL

php - 无法使用 PHP 和 Mysql 退出循环

mysql - 在 Mysql/Mariadb 中删除 --temporary-- 索引

java - 修改Filter中URI的PathParam

spring - 如何同时使用 Rabbit 连接缓存模式和自动声明功能?