如何在scala slick中实现GetResult [List [String]]?

时间:2017-05-09 04:12:11

标签: scala slick slick-3.0

我使用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]]作为编译器提示,但我不知道该怎么做。其他方式也欢迎。

感谢。

1 个答案:

答案 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)