在 JOOQ DSL 中使用 PosgreSQL array_agg 和 join 别名

2024-01-24

我想将此 SQL 查询转换为 JOOQ DSL。

select "p".*, array_agg("pmu") as projectmemberusers
from "Projects" as "p"
join "ProjectMemberUsers" as "pmu" on "pmu"."projectId" = "p"."id"
group by "p"."id";

目前我已经尝试使用 JOOQ 做这样的事情:

val p = PROJECTS.`as`("p")
val pmu = PROJECTMEMBERUSERS.`as`("pmu")
val query = db.select(p.asterisk(), DSL.arrayAgg(pmu))
        .from(p.join(pmu).on(p.ID.eq(pmu.PROJECTID)))
        .groupBy(p.ID)

这不起作用,因为DSL.arrayAgg期待某种类型的东西Field<T>作为输入。

我是 JOOQ 的新手,不是 SQL 专业人士。非常感谢详细的解释和改进建议。


首先,语法确实有效,在 SQL Fiddle 中检查了这一点:http://sqlfiddle.com/#!17/e45b7/3 http://sqlfiddle.com/#!17/e45b7/3

但没有详细记录:https://www.postgresql.org/docs/9.5/static/functions-aggregate.html https://www.postgresql.org/docs/9.5/static/functions-aggregate.html https://www.postgresql.org/docs/current/static/rowtypes.html#ROWTYPES-USAGE https://www.postgresql.org/docs/current/static/rowtypes.html#ROWTYPES-USAGE

这可能就是 jOOQ 目前不支持的原因:https://github.com/jOOQ/jOOQ/blob/master/jOOQ/src/main/java/org/jooq/impl/DSL.java#L16856 https://github.com/jOOQ/jOOQ/blob/master/jOOQ/src/main/java/org/jooq/impl/DSL.java#L16856

当前唯一可用的语法是单个字段:DSL.arrayAgg(pmu.field(1))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JOOQ DSL 中使用 PosgreSQL array_agg 和 join 别名 的相关文章

随机推荐

  • C# DllImport 不存在的函数

    我们有一些从外部 DLL 调用非托管代码的 C 代码 外部DLL作为插件使用 并且可能具有不同的版本 不同的版本包含一组略有不同的可用功能 当我们 DllImport 一个不存在的函数时会发生什么 当我们调用它时会发生什么 我们能否在调用特
  • iOS 7:UIWebView 由于范围异常而崩溃

    我目前正在构建一个使用 krpano 查看器的应用程序 它是一个用 JavaScript 构建的全景查看器 我正在 UIWebView 中加载此全景查看器 其中包含保存在 iPad 上的本地图像 但使用全景查看器一段时间后 我收到此错误并且
  • 更新到 ember-cli 0.39 后请求代理停止工作

    我刚刚将项目从 ember cli 0 37 更新到 0 39 并且 api 请求不再代理到 Rails 后端 我已经运行 ember init 并更新依赖项 但它仍然不起作用 ember cli 0 39 余烬 1 6 0 beta 5
  • 混合 32 位和 64 位托管程序集

    All 我有一个在 32 位计算机上运行的 NET 托管应用程序 我可以将其编译为 64 位并将其移植到 64 位计算机上 不过 我依赖于一些 32 位程序集的第 3 方 DLL 我可以将 64 位和 32 位程序集混合在一起在 64 位计
  • JS中如何将十进制转换为二进制?

    可以通过以下方式将二进制转换为十进制 var binary 110 var int parseInt binary 2 document getElementById results innerHTML int div div 但是 我如何
  • 查找R中以逗号分隔的字符串的长度[重复]

    这个问题在这里已经有答案了 我是 R 的新手 我有一个场景来计算 R 中以逗号分隔的每个字符串的长度 我有一个以下数据框 其中有一个列值 我要找出此列中用逗号分隔的每个单元格的长度 我知道这与paste 但无法让它工作 ex DF Valu
  • 在Python中,如何找到排序列表中第一个大于阈值的值的索引? [复制]

    这个问题在这里已经有答案了 在Python中 如何找到排序列表中第一个大于阈值的值的索引 我可以想到几种方法来做到这一点 线性搜索 手写二分法 但我正在寻找一种干净且相当有效的方法来做到这一点 由于这可能是一个非常常见的问题 我相信经验丰富
  • Javascript提示仅读取输入数字的第一位

    我正在做一个快速的小练习 我试图允许用户输入 5 个随机数字 并让我的脚本按升序排列它们 但它只适用于单位数字 例如 当用户输入 27 时 程序会将其视为简单的 2 我不确定是什么导致了这种情况发生 并且我愿意接受任何建议 另外 代码没有尽
  • WPF 当子级的宽度绑定到父级的实际宽度时会发生什么

    因此 如果我在子对象的宽度上放置了一个绑定 将其链接到其父对象ActualWidth 会发生什么 我的猜测是 父级测量子级想要多少宽度 子级告诉父级 0 宽度 然后在排列期间为父级提供实际空间 并且它尝试给子级零 因为子级不想要任何宽度 然
  • 删除 ListViewItem 的突出显示效果

    In a ListView有ListviewItems当鼠标悬停在其上方或被选中时 它们不得改变外观 我尝试用这种风格来实现这一点并且做到了somewhat成功
  • Azure DevOps Pipelines - 规模集代理:安装 Docker

    我们最近重新配置了构建流程 使其完全在容器中运行 现在我们希望从本地构建代理迁移到使用 Azure 规模集中的代理 我们希望避免为 Azure 规模集维护自己的 VM 映像 并选择使用 Azure 中提供的默认 Ubuntu 18 04 L
  • android中的scrollView和页脚问题

    在我的 Android 应用程序中 我使用页眉和页脚 在两者之间 我在滚动视图内有一个表格 问题是 即使我使用与页眉相同的方式添加页脚 我也无法看到页脚include tag 如果我将滚动视图的高度和宽度设置为某个指定的长度 它可以正常工作
  • 配置Emacs Flymake直接调用g++

    当编写简单的 一个文件的C 代码时 我通常直接调用g 默认情况下 Flymake 似乎假设存在带有检查语法目标的 Makefile 如何配置 Flymake 直接调用 g 例如 g c a cpp 如果可以修改答案以包含编译器标志 那就更好
  • 在 C++ 错误中读取空格分隔值文件

    我正在尝试从文件中获取浮点值以在我的程序中使用它们 我使用以下论坛来构建程序逐行读取文件 https stackoverflow com questions 7868936 c read file line by line 但这样做获得的值
  • 在构造函数中将临时变量传递给引用 arg 是有效的。但不适用于一般功能。为什么? [复制]

    这个问题在这里已经有答案了 考虑以下代码 在这里 即使构造函数是 A B b A a B 也会编译 但 print B 不起作用 但 print 也被声明为 print B b 为什么会出现这种不一致的情况呢 include
  • 通过 javascript 将事件侦听器附加到单选按钮

    我有几个同名的单选按钮 像这样
  • 使用正则表达式键入时强制输入字段中的特定格式

    我想防止在字段中使用除正式正确百分比之外的任何其他格式 而即使执行了击键 也不会显示任何其他输入 现在我有以下代码 它不允许我实现我的结果 input keypress function e var regex d 1 4 d 0 3 g
  • symfony 中的 Assetic 文件位于防火墙后面?

    我有简单的登录页面和安全设置 如下所示 firewalls main pattern form login provider fos userbundle csrf provider form csrf provider use refer
  • 如何使用Delphi在运行时创建一个对所有用户具有完全权限的目录?

    我需要在 COMMONAPPDATA 中创建一个目录 如果它不存在 该目录具有该计算机的每个用户的完全权限 每个人都可以读取或写入该目录 我正在寻找在 Delphi 中执行此操作的本机简单代码 而不使用第三方库或组件 WarmBooter
  • 在 JOOQ DSL 中使用 PosgreSQL array_agg 和 join 别名

    我想将此 SQL 查询转换为 JOOQ DSL select p array agg pmu as projectmemberusers from Projects as p join ProjectMemberUsers as pmu o