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

在QueryDSL中从Select中选择

松铭
2023-03-14
SELECT `sum(<field>)` FROM (SELECT field from ... WHERE ...)

SQL可能如下所示:

SELECT count(a.id) 
    FROM (
        SELECT art.id 
        FROM article art
        LEFT JOIN store s ON (art.storeId = s.id)
        WHERE art.name = 'green Balloon'
        GROUP BY s.id
    ) a;

如何将said SQL转换为querydsl?

编辑:因为它受到混淆:是的,这个例子是愚蠢的。不,我不想“优化”SQL。我所需要的只是一些生成完全相同(愚蠢的)SQL的QueryDSL代码。或者任何其他查询DSL代码生成任何类型的SELECT...FROM(SELECT...)。如果可能的话。

共有1个答案

程举
2023-03-14

接受OP只是想知道该语法是否可以在QueryDsl中重复-请考虑以下内容。

应该是这样的:

SQLExpression.select(Expressions.numberPath(Long.class, "ID").count())
             .from(SQLExpressions.select(QArticle.id().as("ID"))
                                 .from(QArticle)
                                 .leftJoin(QStore).on(QStore.id()
                                                 .eq(QArticle.storeId())
                                 .where(QArticle.name()
                                 .eq("green Balloon"))
             .as("SQ")

它很可能简化这一点--但它应该能让你在那里得到大部分的方法。

 类似资料:
  • 问题内容: 是否可以执行PIVOT并从表中选择列表,而不是使用单个值? 像这样(不正确的语法错误): 这个可以编译,但是对我不起作用: PS:我不想使用动态SQL,有没有一种方法可以不使用动态SQL? 问题答案: 如果没有动态SQL,那么恐怕答案是否定的,那是不可能的。解析器需要预先知道值才能执行到列的数据透视。

  • 我正在JBoss上使用QueryDSL-JPA,希望在某一点上从一个不同的表中选择一个实体,而不是我通常使用并通过@table进行注释的表。我不想创建一个单独的Java类,因为最终,它应该返回给我与我正在使用的相同的类。

  • 我将以下SQL作为本机查询运行,但我想知道是否有一种方法可以在JPAQuery中运行它,以便使用元组或类实例化。 为了精确起见,我使用了别名而不是qtypes。

  • 我有一个带有QueryDSL JPAQuery的应用程序。这里是: 我已经尝试了DeviceGroup.Customer.Account而不是WorkGroup.Account,结果是一样的。 以下是jpaQuery.toString():

  • 我正在学习AngularJS并尝试实现一个表单。我有一个select元素,我希望能够根据所选文本更改所选值的颜色。 HTML: CSS: 但这不起作用。这里的问题是什么? EDIT1:默认选项在选中时应该是灰色的,甚至在用户打开下拉列表时也应该是灰色的。Rest其他选项应该在两个条件下都有其黑色文本(在选择和下拉列表显示)。 提前道谢。