2017-05-09 61 views
0

我使用SQLActionBuilder,如seq"""select ..."""来创建一个通用/广泛的sql查询,我不关心它的结果列数。
文档示例使用as[TupleX]来决定结果类型,在我的阶段,我想用List[String]替换TupleX类型。
我试图用sQLActionBuilder.as[List[String]]但编译错误遭遇:如何在scala中实现GetResult [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

首先,查询数据库总是返回一个元组列表,因此结果类型为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) 
相关问题