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

QueryDSL:在JPAQuery.From()中使用JPASubQuery

景帅
2023-03-14

我有一个SQL:

  SELECT
    t.name,
    sum(t.value)
  FROM
    myTable t
  WHERE 
    -- conditions...
  GROUP BY 
    t.name
  HAVING sum(t.value) >= 100
  select count(*) from (
   -- QUERY1
) as countQuery
JPASubQuery subQuery = new JPASubQuery(query1.getMetadata());
new JPAQuery().from(subquery).count();

这将是一个很好的功能。

共有1个答案

沈华晖
2023-03-14

好吧,由于JPA的限制,这是不可能的:

https://github.com/querydsl/querydsl/issues/1471

 类似资料:
  • 我将QueryDSL与jpa一起使用,我想查找日期范围之间的记录,如下所示 但between仅支持布尔表达式和字符串表达式

  • 嗨, 我还尝试使用com.querydsl.core.types.dsl.expressions和com.querydsl.core.types.predicate,如下所示: 但我得到了一个无效的运算符和错误。 怎么会这样呢?

  • 使用Spring Data nad Querydsl,我们可以只声明存储库接口并跳过实现类。一些具有特定名称或使用@Query注释的方法,仅此而已。 但是有时我想使用JPAQuery并自己定义方法的主体,比方说 null

  • 您可以看到,子查询中没有使用协议实体路径a1的别名,而是被协议实体路径A2的别名所取代。在querydsl中还需要做一些其他的事情才能生成这个查询吗?

  • 我使用下面的maven pom。xml文件,无法生成querydsl文件。 我发现了一个问题:Kotlin Kapt注释处理器不能与maven一起工作 我想从kotlin实体类生成jpa querydsl文件。 网上有一个很好的例子,说明如何使用 https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-query

  • 我正在尝试使用QueryDSL计算平均日期差异。 我还尝试了其他方法,例如使用,但它没有返回正确的值。如果我们想要获得以秒为单位的日期差异,我们似乎需要找到一些方法来调用数据库特定的日期/时间差函数,而不仅仅是使用减号。 遗憾的是,在JPQL中计算日期差异似乎是不可能的,所以我想querydsl-jpa在这方面也有限制。因此,我们必须编写一个本机SQL查询,或者找到一些黑客来让QueryDSL生成