是否有一些 scala 关系数据库框架(anorm、squeryl 等)使用类似 postgres 的聚合器在分组后生成列表,或者至少模拟其使用?
我期望有两个层次的实施:
我发现特别有趣的是,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(使用前将#替换为@)