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



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

谢谢。

首先,查询数据库总是返回元组列表,因此结果类型将是List[TupleX],因为每一行都表示为列表记录,然后每行中的列分别是元组元素。因此,您的数据将看起来像数据类型为 List[(Int, Int, Int)]List((1,2,3),(3,4,5))。要生成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)

最新更新