从slick plain SQL查询返回元组列类型
在使用postgres的slick 3中,我尝试使用具有元组列返回类型的普通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[
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扩展库,它支持。您可以在这里看到一些示例: