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

JPQL和JPQL构造函数表达式中的子查询

周凯捷
2023-03-14

我有一个表ROOT和一个包含与ROOT相关行的表子级。

我想为根的每一行检索一个对象,该对象包含根对象以及与CHILDREN表中的ROOT.id相关的行数。

这可以很容易地在SQL中实现,但我想知道如何在JPQL中编写

在SQL中:

SELECT 
    r.*, 
    (SELECT COUNT(c.i_id) 
     FROM 
        children c 
    WHERE 
        c.rootId = r.id)
FROM root r;
Caused by: org.hibernate.HibernateException: Errors in named queries: xxx
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate 
           appropriate constructor on class RootExtended...
package plop;

public class RootExtended{

    private Root root;

    private Long count;

    public RootExtended(final Root root, final Long count) {
        this.root= root;
        this.count= count;
    }

    // getters and setters to follow
}
SELECT 
    new plop.RootExtended(r, 
                    (SELECT 
                         count(c.id) 
                     FROM 
                         Child as c 
                     WHERE 
                         c.rootId = r.id
                     )
                    ) 
FROM 
    Root as r 

知道吗?

共有1个答案

屈昊天
2023-03-14
public class RootExtended{

private Root root;

private Long count;

public RootExtended(final Root root, final Long count) {
    this.root= root;
    this.count= count;
}

// getters and setters to follow
}
SELECT NEW package.RootExtended ( rt.r, rt.cnt) from ( select r from Root r, 
      (SELECT count(c.id) as cnt FROM Child c  WHERE  c.rootId = r.id ) rt )
 类似资料:
  • 问题内容: 假设有一张桌子: 和关联的JPA实体类 有什么方法可以构造松散地转换为该SQL的JPQL语句,即如何将case表达式转换为JPQL? 问题答案: 它已在JPA 2.0中添加 用法: 参考: http : //en.wikibooks.org/wiki/Java_Persistence/JPQL_BNF#New_in_JPA_2.0

  • 问题内容: 我对SQL和JPQL的了解不是很好,我一直在尝试创建以下sql语句的JPQL查询: 编辑:糟糕,我忘记了按用户ID将搜索添加到查询中。我想获取用户所属的所有组。 但是我只是语法不正确。任何帮助将不胜感激。 相关代码段: Group.java User.java 问题答案: 使用JPQL,它将是: 这里是您的EntityManager,是要为其加载组列表的User类的实例。如果只有用户标

  • 我想知道JPQL是否可以嵌套查询。我正在学习Spring Data JPA,我也上传了几个相关的问题。 如果MySQL中有以下sql,我如何生成JPQL: 我有两个实体。 上面的实体有一个@OneTo多集合,集合实体在下面。 我想得到不到10个孩子的作弊实体。

  • 我有两个JPA实体 现在我想用JPQL做一些聚合查询: 得到的SQL查询(我使用的是MySQL数据库)如下所示:

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