scala 框架中支持 PostgreSQL 特定的 array_agg 函数吗?

2024-04-12

是否有一些 scala 关系数据库框架(anorm、squeryl 等)使用类似 postgres 的聚合器在分组后生成列表,或者至少模拟其使用?

我期望有两个层次的实施:

  • 一个“标准”的,其中至少任何带有 array_agg 的 SQL 分组都被转换为正在聚合的类型的列表,

  • 以及“scala ORM 支持”,其中允许某种类型的联接,以便如果聚合是其他表的外键,则会生成另一个表的元素列表。当然,最后这件事超出了 SQL 的能力范围,但如果我使用更强大的语言,我不介意使用一些类固醇。

我发现特别有趣的是,slick 的文档正是基于允许 scala group-by 表示法,似乎明确否定了 group-by 结果的列表输出。

编辑:用例

您有典型的多对多表,例如产品和供应商对(p_id,s_id)。您想要为每种产品生成一份供应商列表。所以 postgresql 查询应该是

SELECT p_id, array_agg(s_id) from t1 group by p_id

人们可以期待一些惯用的方式来解决这个问题,但我不知道如何做到这一点。此外,如果我们使用某些 ORM,那么我们还可以考虑分别在 p_id 和 s_id 上与表 products 和 sellers 进行连接,并得到包含对象和不仅仅是ID


我也不确定我是否理解你的问题是否正确,你能详细说明一下吗?

在 slick 中,您当前无法使用 postgres“array_agg”或“string_agg”作为 Query 类型的方法。如果你想使用这个特定的功能,那么你需要使用自定义sql。但是:我前段时间添加了一个问题(https://github.com/slick/slick/issues/923 https://github.com/slick/slick/issues/923,您应该遵循此讨论)并且我们已经准备好来自 cvogt 的原型。

我过去需要使用“string_agg”并为其添加了一个补丁(请参阅https://github.com/mobiworx/slick/commit/486c39a7ed90c9ccac356dfdb0e5dc5c24e32d63 https://github.com/mobiworx/slick/commit/486c39a7ed90c9ccac356dfdb0e5dc5c24e32d63),所以也许这对您有帮助。查看“AggregateTest”以了解更多信息。

另一种可能性是将“array_agg”的用法封装在数据库视图中,并仅使用该视图与 slick。这样你就不需要直接在 slick 中使用“array_agg”。

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

scala 框架中支持 PostgreSQL 特定的 array_agg 函数吗? 的相关文章

  • 插入多行并返回主键时 Sqlalchemy 的奇怪行为

    插入多行并返回主键时 我注意到一些奇怪的事情 如果我在 isert 查询中添加使用参数值 我会得到预期的行为 但是当将值传递给游标时 不会返回任何内容 这可能是一个错误还是我误解了什么 我的sqlachemy版本是0 9 4 下面如何重现错
  • 数据库错误:值对于类型字符变化来说太长(100)

    我有一个 Django 网站 运行我们几年前在内部构建的迷你 CMS 它使用 postgresql 保存简单的标题和一段文本时 出现以下错误 value too long for type character varying 100 奇怪的
  • 如何在 PostgreSQL 中将数据库从一台服务器移动到另一台服务器?

    我正在尝试将数据库从旧服务器移动到新服务器 任何帮助 将不胜感激 Just pipe http www postgresql org docs current interactive migration html从旧服务器转储到新服务器 p
  • 是否有可能在 postgres 中捕获外键违规

    我正在尝试将数据插入具有外键约束的表中 如果我插入的行中存在约束违规 我想丢弃该数据 问题是每次我违反约束时 postgres 都会返回一个错误 我是否可以在插入语句中添加一些语句 例如 ON FOREIGN KEY CONSTRAINT
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • Google Cloud SQL - Postgresql 存储不断增长

    我最近开始修补 Google Cloud SQL PostgreSQL 我创建了一个空数据库 在 4 5 天的时间里 其存储使用量已增长到超过 20GB 它一直在上升 但数据库中没有数据 它甚至没有被使用 有谁知道会发生什么以及如何阻止它
  • 更改迁移中的自动​​增量值(PostgreSQL 和 SQLite3)

    我有一个托管在 Heroku 上的项目 想要更改表的自动增量起始值 我在本地使用 SQLite3 Heroku 使用 PostgreSQL 这是我在迁移中所拥有的 class CreateMytable lt ActiveRecord Mi
  • Scala 模式匹配变量绑定

    为什么提取器返回时不能以 样式绑定变量Option
  • 缓存 Slick DBIO 操作

    我正在尝试加快 SELECT FROM WHERE name 的速度Play 中的查询类型 Scala 应用程序 我正在使用 Play 2 4 Scala 2 11 play slick 1 1 1 包 该软件包使用Slick 3 1版本
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 用户登录时的 Postgresql 触发器

    我正在尝试找出一种方法来了解用户何时登录 Postgres 数据库 有没有办法定义用户登录数据库时触发的触发器 或者是否有一个表或系统视图在任何人登录数据库时都会更新 登录钩子 https github com splendiddata l
  • 使用 scala 集合 - CanBuildFrom 麻烦

    我正在尝试编写一个接受任何类型集合的方法CC 并将其映射到一个新的集合 相同的集合类型但不同的元素类型 我正在挣扎 基本上我正在尝试实施map but 不在集合本身上 问题 我正在尝试实现一个带有签名的方法 它看起来有点像 def map
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • wal_keep_segments 为什么是最小值而不是最大值?

    根据docs http www postgresql org docs current static runtime config replication html wal keep segments integer 指定过去日志的最小数量
  • Scala 特性:val/def 和 require

    下面的代码抛出IllegalArgumentException trait T val x Long require x gt 0 object T extends App val y new T val x 42L 而以下情况则不然 tr
  • 检查 postgres 复制状态

    有人可以建议检查 postgresql 复制状态的步骤以及如何确定复制是否未正确进行吗 我们在 pgsql9 0 和 pgsql9 4 中使用流复制 我通常使用以下 SQL 查询来检查 Postgres v11 的状态 关于主人 selec
  • 执行带有 EXCEPTION 的 PostgreSQL 查询会导致两条不同的错误消息

    我有一个 PostgreSQL 查询 其中包含事务和列重复时的异常 BEGIN ALTER TABLE public cars ADD COLUMN top speed text EXCEPTION WHEN duplicate colum
  • 分析 sbt 构建

    我的 sbt 构建需要很长时间 它又大又复杂 很难知道从哪里开始清理 看起来 sbt 保留了很多关于构建结构的元数据 包括相互依赖关系 命名任务 范围界定等 有了所有这些元数据 似乎很容易跳入并测量每个不同任务 及其范围 花费的时间 在代码
  • scala play框架如何对异步控制器进行单元测试

    使用 Scala play 2 5 版并尝试遵循以下文档中的单元测试控制器指南 https www playframework com documentation 2 5 x ScalaTestingWithScalaTest https

随机推荐

  • 委托不接受子类?

    我的委托似乎不接受子类 我认为一个例子是最简单的 public class A public A public class B A public B public class Program private delegate void Ca
  • 如何在 ipyparallel 客户端和远程引擎之间最好地共享静态数据?

    我在具有不同参数的循环中运行相同的模拟 每个模拟都使用 pandas DataFrame data 只能读取 不能修改 使用ipyparallel IPython并行 我可以在模拟开始之前将此DataFrame放入我视图中每个引擎的全局变量
  • 谁将高级语言转换为汇编语言

    好吧 通过计算机指令 程序的基本功能 我了解到我们用高级语言编写源代码 编译器将其转换为低级语言 机器代码 目标代码 我还了解到汇编器将汇编语言转换为机器代码 目标代码 那么我就有以下疑问 如果编译器直接将高级转换为低级 则从生成该汇编语言
  • “重置”对象变量的“Pythonic”方式?

    我认为 这里的 变量 指的是 名称 不完全确定pythonistas使用的定义 我有一个对象和一些方法 这些方法都需要并且都改变对象的变量 我怎样才能以最Pythonic和最好的方式 尊重OOP的技术 实现让方法使用对象变量 同时又保留其他
  • 嵌套表格中的长字换行

    我正在尝试总结一个很长的词 我看过这个帖子 如何防止长单词破坏我的 div https stackoverflow com questions 320184 how to prevent long words from breaking m
  • 生成谷歌地图图像[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想允许我的网站的最终用户生成谷歌地
  • 如何使用Logback以JSON方式登录?

    我是 SLF4J 和 Logback 的新手 我正在尝试记录以下 API 的每个请求和响应link https pivotal io de application transformation recipes observability r
  • 内容可编辑和非按钮元素

    如果使用按钮 我可以轻松地对内容可编辑的选择执行 execcommand 但是使用任何其他元素都会失败 http jsbin com atike edit http jsbin com atike edit 为什么会这样以及如何使用 div
  • 具有通用向量和对类型的对向量,模板的模板

    我想将一个成对的向量传递给一个函数 实际的向量实现以及对的类型应该是模板参数 我想到了这样的事情 template
  • jquery - firefox 中的 event.preventDefault()

    我有问题event preventDefault 在 Firefox 中 它不起作用 这是 jquery 代码 facebook del 1 click function event preventDefault var selector
  • MVC(模型-视图-控制器)——能用简单的术语解释一下吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我需要向一位不太懂技术的经理解释 MVC 模型 视图 控制器 概念 但遇到了麻烦 问题是解释需要处于 你的奶奶会明白的 水平 例如即使是相当简单的解释
  • 如何快速发送自动短信? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的应用程序中自动发送短信 我怎样才能快速做到这一点 我使用 MFMessageComposeViewController 发送
  • 对 Map 列表进行排序

    我有一个像这样创建的列表变量 List
  • 观察者 - 显式指定感兴趣的修改 - JAVA 实现

    I asked here https stackoverflow com questions 65198966 observer pattern observe attributes independently当我需要通知时我应该如何处理这
  • 为什么“System.out.println”在 Android 中不起作用?

    我想在控制台中打印一些内容 以便我可以调试它 但由于某种原因 我的 Android 应用程序中没有打印任何内容 那我该如何调试呢 public class HelloWebview extends Activity WebView webv
  • Angular 2 引导选项 - AOT 与 JIT

    刚开始使用 Angular 2 Angular 2 中的各种 Bootstrapping 选项有哪些 为什么当我进行更改并刷新时 index html 只需要很少的时间来检索 HTML 标记 它们之间的区别 有两种选择 动态引导 使用的编译
  • 如何为 Debian/Ubuntu 打包 Mono 应用程序

    是否有任何用于为 Debian Ubuntu 打包 Mono 应用程序的指南或工具 比如将应用程序附带的程序集放在哪里等 Mono 有一些关于打包的一般准则 但这些准则并非特定于 Debian Ubuntu 它们的做法可能有所不同 http
  • C:将x86指令放入数组并执行它们[重复]

    这个问题在这里已经有答案了 有没有办法将处理器指令放入数组中 使其内存段可执行并将其作为简单函数运行 int main char myarr 13 0x90 0xc3 void myfunc void myarr myfunc return
  • Google Calendar API - 通过服务帐户访问自己的日历

    我想访问 Google Calendar API 以使用 Python 插入条目 我创建了一个服务帐号在Google API控制台上 添加私钥 下载它 但是 当我尝试修改同一帐户上的任何日历时 我收到以下错误消息 读书作品 Code is
  • scala 框架中支持 PostgreSQL 特定的 array_agg 函数吗?

    是否有一些 scala 关系数据库框架 anorm squeryl 等 使用类似 postgres 的聚合器在分组后生成列表 或者至少模拟其使用 我期望有两个层次的实施 一个 标准 的 其中至少任何带有 array agg 的 SQL 分组