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

在JPA2条件中从claus子查询

易飞文
2023-03-14
class Account {
    Long id;
}
class User {
    Long id;
    @ManyToOne
    Account account;
}
select Account.id, NumUsers.num from Account, 
       (select Account.id as account_id, count(User.id) as num 
        from User join Account on User.account_id=Account.id 
        group by Account.id) as NumUsers 
where Account.id=NumUsers.account_id;
select Account.id, count(User.id) from Account join 
       User on User.account_id=Account.id group by Account.id

但我计划为需要多个group BY的报表创建更复杂的查询。我在这里读到了关于多组的正确方法

如何使用JPA2标准API创建查询?

共有1个答案

池砚文
2023-03-14

不能在FROM子句中与JPA2Criteria API一起使用subquery。它确实有与JPQL相同的限制。在JPA2规范中,关于JPQL中的子查询,如下所述:

子查询可以在WHERE或HAVING子句中使用。

关于Criteria API中的子查询的说明也会得出相同的结论:

相关和非相关子查询都可以用在限制谓词中。子查询是通过创建和修改子查询对象来构造的。

子查询实例可以作为参数传递给CriteriaBuilder接口的all、any或some方法,以便在条件表达式中使用。

子查询实例可以传递给CriteriaBuilder exists方法以创建条件谓词。

 类似资料:
  • 如何在Hibernate中为下面给定的查询编写criteria builder api查询?batchId不是主键 从用户中选择批号('1','3') 我尝试过: 除了数据库中存在的数据外,我什么也得不到。

  • 问题内容: 我需要使用detachedCriteria进行此SQL查询: 这个想法是从不属于用户的游戏中获取ID。我尝试了与detachedCriteria类似的10种不同方法,但得到了“未知实体:null” MappingException代码应类似于: 还设置投影以仅返回游戏的ID。 有任何想法吗?我认为Hibernate在加入没有别名的查询时会遇到一些麻烦。添加别名是可行的,但结果是完全错误

  • 问题内容: 如何使用Criteria编写以下SQL: 问题答案: 要使用NHibernate,产生如下查询: 我们必须选择: 将子选择映射为实体。 创建原始SQL查询 第一种选择是创建一些,并将其映射为一个实体。如果我们不喜欢视图(或无法创建视图),则可以使用NHibernate映射元素element的功能 : 第二种选择是关于使用NHibernate API创建本机/原始SQL: 它没有从映射中

  • 如何创建高效的 JPA 条件查询,以便仅当实体存在于联接表中时才选择实体列表?例如,采用以下三个表: 有问题的查询(我希望 JPA 生成什么)是: 以下条件查询将产生类似的结果,但有两个连接: 根本问题似乎是我对USER_WORKGROUP连接表使用@JoinTable注释,而不是对连接表使用单独的@Entity,所以我似乎不能在条件查询中将USER_WORGGroup用作根。 以下是实体类:

  • 问题内容: 我有一个包含大量单词的数据库,但是我只想选择那些字符长度等于给定数字的记录(在示例情况3中): 但这不起作用…有人可以向我显示正确的查询吗? 问题答案: 抱歉,我不确定您在谈论哪个SQL平台: 在MySQL中: 在MSSQL中 LENGTH()(MySQL)或LEN()(MSSQL)函数将在您可以在WHERE子句中用作条件的列中返回字符串的长度。 编辑 我知道这确实很老,但是我想扩大答

  • 我试图使用JPA标准编写以下查询,但我无法选择子查询中的多列。 我陷入了下面的实现过程中,无法找到如何在子查询中选择多个列。请看我在代码中的评论(第三行)。 请帮我解决这个问题。