我正在尝试SELECT *
在Slick中对视图运行一个样式的查询.理想情况下,我最终会得到一个函数,您可以将一组列名作为a Seq[String]
并执行查询SELECT col1, col2, ... FROM view
.如果这不可行那么只返回所有列(SELECT * FROM view
)是可以接受的.
我知道我可以通过Table
为这个视图定义一个类以及一个附带的case类来做到这一点,但是其中一些视图有数百个列(这需要嵌套元组,假设元组有22个元素限制),那里有许多视图我必须这样做,因此需要编写/生成/维护很多代码.如果可能的话,我想避免这种情况.
这在Slick可行吗?通过定义一个Table
类而不必在静态代码中定义列(用动态列字符串列表初始化一些类是可以接受的),或者只是生成一个SQL查询,我们自己使用sql"""..."""
并以某种方式.as[...]
处理返回一组任意长度的列?
我不需要对实际的列类型做任何特殊的事情:在数据库方面,我们有各种类型的混合,但如果它们在Slick方面都被视为文本列,那对我来说没问题.
我正在使用 jOOQ 3.4.2 使用 Scala 查询 PostgreSQL 数据库。我想一次获取一小块结果集,而不将整个结果集加载到内存中,因为查询可能返回许多行。我有以下代码:
val query = context.selectFrom(table)
.where(conditions)
.orderBy(orderField)
.fetchSize(1)
val cursor = query.fetchLazy()
// Iterate through cursor using cursor.fetchOne()
Run Code Online (Sandbox Code Playgroud)
看起来 jOOQ 会在我调用时将整个结果集(或至少是结果集的一大块)加载到内存中fetchLazy()
,甚至在我从游标中获取第一行之前(根据recvfrom()
我看到的大量系统调用来判断)whilefetchLazy()
正在被调用)。难道我做错了什么?