2017-05-09 56 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) 
相關問題