从slick plain SQL查询返回元组列类型

从slick plain SQL查询返回元组列类型,sql,postgresql,scala,slick,Sql,Postgresql,Scala,Slick,在使用postgres的slick 3中,我尝试使用具有元组列返回类型的普通sql查询。我的问题是这样的: sql""" select (column1, column2) as tup from table group by tup; """.as[((Int, String))] 但在编译时,我得到以下错误: 找不到参数rconv的隐式值:slick.jdbc.GetResult[((Int,String),String)] 如何使用简单的sql查询返回元组列类型?GetResult[

在使用postgres的slick 3中,我尝试使用具有元组列返回类型的普通sql查询。我的问题是这样的:

sql"""
  select (column1, column2) as tup from table group by tup;
""".as[((Int, String))]
但在编译时,我得到以下错误:

找不到参数rconv的隐式值:slick.jdbc.GetResult[((Int,String),String)]


如何使用简单的sql查询返回元组列类型?

GetResult[T]
是函数
PositionedResult=>T
的包装器,需要使用
PositionedResult
方法(如
nextInt
nextString
来提取位置类型字段。以下隐式val应满足您的需要:

implicit val getTableResult = GetResult(r => (r.nextInt, r.nextString))

更多细节可以在这里找到。

没有
GROUP BY
子句,查询是否有效?@Dario问题实际上不是GROUP BY,而是列类型和scala类型之间的映射。如果您在有或没有group by的数据库上正确运行查询,则它根本不会通过slick运行。slick不支持开箱即用的复合类型,但PostgreSQL有一个slick扩展库,它支持。您可以在这里看到一些示例: