当前位置: 首页 > 知识库问答 >
问题:

SQL到JPQL,如何查询嵌套的JPQL

陆洛城
2023-03-14

我想知道JPQL是否可以嵌套查询。我正在学习Spring Data JPA,我也上传了几个相关的问题。

如果MySQL中有以下sql,我如何生成JPQL:

select
    c.*
from
    cheat c
    left join (select * from cheat_vote where val = 1) v on c.cheat_seq = v.cheat_fk
group by
    c.cheat_seq
having
    count(*) < 10
limit 5

我有两个实体。

public class Cheat implements Serializable{

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "cheat_seq", length = 10)
    private Long cheatSeq;

    @Column(name = "question", unique = true, nullable = false)
    private String question;

    @Column(name = "answer", unique = true, nullable = false)
    private String answer;

    @Column(name = "writer_ip", nullable = false)
    private String writerIP;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "reg_date", nullable = false)
    private Date regDate;

    @Transient
    private String regDateText;

    @OneToMany(mappedBy = "cheat", fetch=FetchType.LAZY)
    private Set<CheatVote> vote;

    @Override
    public String toString() {
        return "Cheat [cheatSeq=" + cheatSeq + "]";
    }


}

上面的实体有一个@OneTo多集合,集合实体在下面。

public class CheatVote implements Serializable{

    private static final long serialVersionUID = 1L;

    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Id
    @Column(name="seq", nullable=false)
    private Long seq;

    @Column(name="val", nullable=false)
    @NonNull
    private Integer value;

    @Column(name="ip_address", nullable=false)
    @NonNull
    private String ipAddress;

    @JoinColumn(name="cheat_fk", referencedColumnName="cheat_seq")
    @ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    @NonNull
    private Cheat cheat;

    @Override
    public String toString() {
        return "CheatVote [seq=" + seq + "]";
    }


}

我想得到不到10个孩子的作弊实体。

共有1个答案

申屠新觉
2023-03-14

你可以试试:

@Query("SELECT c FROM Cheat c LEFT JOIN c.vote v WHERE v.value = 1 GROUP BY c.cheatSeq HAVING count(c) < 10")

关于“极限”,您可以使用Spring数据JPA的参数

 类似资料:
  • 问题内容: 我有一个数据库,并且使用查询来生成一个中间表,如下所示: 我想为a <avg(a)的用户计算b的标准偏差 我以这种方式计算avg(a),并且效果很好: 但是查询: 返回一个错误,更准确地说,我被告知无法识别avg中的“ a”(选择a from …)。这使我感到非常困惑,因为它可以在上一个查询中使用。 如果有人可以帮助我,我将不胜感激。 编辑: 我将查询结果存储到临时表中以生成中间表,但

  • 我有3个表作为学生数据,包括学生的数据,科目表的数据提供的所有科目和分数,学生获得的每一个科目的分数。通过StudentId标记到StudentData表的表映射,通过SubjectId标记到Subjects表的表映射 我想做的是选择每个科目的最高分数和学生的名字,如下所示 所以我写了一个甲骨文PL / SQL查询如下, 但它只给出了一个结果。请帮助我开发一个查询来获取我的预期结果集。

  • 我需要帮助与HQL/JPQL查询JavaSpring Boot项目与Hibernate和Postgresql数据库。 主要实体是学生和课程(为简洁起见,省略了额外的字段和注释)。 学生 持久实体: 数据库表: 课程可以是存储在数据库中uuid[]字段中的不同课程周期的一部分。 持久实体: 数据库表: 我需要一个方法

  • 我正在构建一个搜索查询,它将一组约束()动态地添加到查询中。一般预期结构如下 换句话说,我有一组(一个或多个)必须全部满足的条件(上面的)。可能有几个这样的集合,其中任何一个都足以进行最后的匹配(上面的)。 这种结构的一个示例,由我的代码生成(这是完整的API查询,生成的部分是): 我对这个查询的理解是: 如果和 或 如果 条目将匹配 不幸的是,我把Elasticsearch称为错误 这个错误是什

  • 如何将这个复杂的sql语句更改为JPQL? 这是否可以在JPQL表单中显示?

  • 我试图将我的Mysql查询转换为JPQL,但我不知道哪个工具可以在eclipse上使用而无需编译。 我的日志没有告诉我哪里是错误,所以我找不到哪里是错误的语法。 谢谢你的帮助!