我使用SQLActionBuilder(例如seq"""select ..."""
)来创建公共/宽范围的SQL查询,我不关心它的结果列数。
文档示例使用as[TupleX]
来确定结果类型,在我的阶段,我希望使用List[String]
替换TupleX
类型。
我尝试使用sQLActionBuilder.as[List[String]]
但遇到编译错误:
Error:(8, 187) could not find implicit value for parameter rconv: slick.jdbc.GetResult[List[String]]
val x = reportUtilRepository.find(List())("td_report_region")(1469635200000L, 1475251200000L)("region" :: Nil, "clicks" :: "CPC" :: Nil)(List("1", "2"), List("regionType" -> "1"))(_.as[List[String]]).map(x => println(x.toString))
和sQLActionBuilder.as[List[(String, String, String)]]
效果很好。那么如何使用List[String]
来匹配常见结果。
我认为直接的方法是实现GetResult[List[String]]
作为编译器提示,但我不知道该怎么做。其他方式也欢迎。
感谢。
答案 0 :(得分:0)
首先,查询数据库始终返回元组列表,因此结果类型将为List[TupleX]
,因为每行都表示为列表记录,然后每行中的列分别是元组元素。
因此,您的数据看起来像List((1,2,3),(3,4,5))
,数据类型为List[(Int, Int, Int)]
。要生成List[Int]
,您可以执行以下操作:
val a = List((1,2,3),(3,4,5))
a map {x => List(x._1, x._2, x._3)} flatten
res0: List[Int] = List(1, 2, 3, 3, 4, 5)