2017-05-09 18 views
0

seq"""select ..."""などのSQLActionBuilderを使用して共通/ワイドSQLクエリを作成していますが、結果の列数については気にしません。
ドキュメントの例を使用して結果のタイプを決定するためにas[TupleX]を使用します。List[String]は、TupleXタイプを置き換えます。
私はsQLActionBuilder.as[List[String]]と試みたが、コンパイルエラーの出会い:GetResult [List [String]]をscala slickで実装する方法は?

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[(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) 
関連する問題