gpt4 book ai didi

java - 从 QueryDSL 中的选择中选择

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:12 24 4
gpt4 key购买 nike

我想知道是否有一种方法可以表达类似的内容

SELECT `sum(<field>)` FROM (SELECT field from ... WHERE ...)

在 QueryDSL(版本 4.x)中。

假设我的所有商店中有一篇文章“绿色气球”,我需要知道我总共有多少个“绿色气球”(我知道这是一个愚蠢的例子,但它会这样做;))。

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;

如何将所述 SQL 转换为 QueryDSL?

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

There is a two year old post处理这个话题,但显然当时这是不可能的。也许是现在?

最佳答案

接受 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")

很可能可以简化此过程 - 但它应该可以帮助您实现大部分目标。

关于java - 从 QueryDSL 中的选择中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41697721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com